我用一个dll的时候,用下面的这句话
function AB_GW_Open(GatewayID: Integer): Integer; stdcall; external 'Abc.dll';
编译的时候提示错误:Unknown directive:'external'但是我用function AB_GW_Open(GatewayID: Integer): Integer; safecall;
编译的时候就没错了,但是在运行的时候却发现这个函数不起作用:(哪位知道这是怎么回事啊?另外,这个stdcall和safecall有什么区别啊?
function AB_GW_Open(GatewayID: Integer): Integer; stdcall; external 'Abc.dll';
编译的时候提示错误:Unknown directive:'external'但是我用function AB_GW_Open(GatewayID: Integer): Integer; safecall;
编译的时候就没错了,但是在运行的时候却发现这个函数不起作用:(哪位知道这是怎么回事啊?另外,这个stdcall和safecall有什么区别啊?
先前是不是你放置的地方不对?
stdcall, cdcel, safecall, pascal
主要区别是参数传递次序和清stack 的方法:stdcall 从右到左, 被调用一方 (Win32标准)
cdcel 从右到左 调用程序
safecall 从右到左 被调用一方
fast-call 从左到右 使用寄存器(delphi缺省)
pascal 从左到右 被调用一方(win3.x缺省)
register 从左至右 函数 是
pascal 从左至右 函数 否
cdcel 从右至左 调用者 否
stdcall 从右至左 函数 否
safecall 从右至左 函数 否