Dll导出有参数函数,在目标程序调用时,出现实参过多的错误(50分)

  • 主题发起人 主题发起人 ff_ff
  • 开始时间 开始时间
F

ff_ff

Unregistered / Unconfirmed
GUEST, unregistred user!
在dll中定义一个函数
program
uses
....
function myfun(i:integer;str:String):Boolean;stdcall;export;
exports
myfun;
begin
end.
在主程序调用时,用静态调用.
function myfun:Boolean;stdcall;external 'mydll.dll';
...
使用时
myfun(i,str);出现..real parameters 的错误.
如果把参数去掉,编译通过.
myfun();鼠标停在括号中,按Ctrl+Shift+Alt出现no patameters的提示?
奇怪啦,我在Dll中明明定义有参数的?
以前总导出过程,导出函数却出错

大家有没有遇到过呢?
是什么原因呢?
谢谢大家
 
这句要和DLL中一致,DLL中有几个参数,这里也要列出
在主程序调用时,用静态调用.
function myfun:Boolean;stdcall;external 'mydll.dll';

应该是
function myfun(i:integer;str:String):Boolean;stdcall;external 'mydll.dll';
 
谢谢兄弟,回去试试,行的话,立即给分。
 
type
myfun=function(i:integer;sr:string);pointer;stdcall;

var
myfun1:myfun;
h:handle;
begin
h:=loaclibrary('dll文件');
@myfun1:=getprocaddress(h,'myfun');
if not assgined(@myfun1) then myfun1(函数的参数);
freelibrary(h);
end;

动态加载你的dll文件应该可以的 .
关键就是 wp231957 兄的那句.一定要把传出来的函数参数加上.
 
谢谢二位.
 
后退
顶部