关于动态调用DLL的问题 (100分)

  • 主题发起人 年轻和尚
  • 开始时间

年轻和尚

Unregistered / Unconfirmed
GUEST, unregistred user!
一个DLL,文件名为 Maxn.dll !
library Maxn;
uses
Classes,SysUitls;

function Maxnum(X,Y:Integer):Integer;stdcall;
begin
if X>Y then result:=X;
if X<Y then result:=Y;
end;
exports
Maxnum;
begin
end.
================================================
在按钮单击事件中....
procedure Form1.Button1Click(Sender:TObject);
var F:function (X,Y:Integer):Integer;
H:THandle;
begin
H:=Loadlibrary('Maxn.dll'); //调用我的DLL,在同一个文件夹下!
if H <> 0 then
begin
@F:=GetProcAddress(H,'Maxnum');
if @F <> nil then
ShowMessage(IntToStr(F(5,4))); //问题在这!!!
Freelibrary(H);
end;
end;
===========================================================
为什么弹出对话框后,显示的数据为"40xx5944",而不是5或者4!
请帮我改正一下!!!!!!!!!!谢谢!
(注:静态调用时无此问题!一切正常!)
 
procedure Form1.Button1Click(Sender:TObject);
var F:function (X,Y:Integer):Integer;stdcall;
~~~~~~~~两边申明要一致
H:THandle;
begin
...
end;
 
谢谢!:)
 
顶部