我用一个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有什么区别啊?

解决方案 »

  1.   

    你都不用external 'ABC.dll'了,当然没作用了
    先前是不是你放置的地方不对?
    stdcall, cdcel, safecall, pascal
    主要区别是参数传递次序和清stack 的方法:stdcall 从右到左,   被调用一方 (Win32标准)
    cdcel   从右到左    调用程序
    safecall 从右到左    被调用一方 
    fast-call 从左到右 使用寄存器(delphi缺省)
    pascal   从左到右   被调用一方(win3.x缺省)
      

  2.   

    指示字       参数进栈顺序     清理工作执行者        使用寄存器传参
    register     从左至右            函数                 是
    pascal       从左至右            函数                 否                    
    cdcel        从右至左            调用者               否                          
    stdcall      从右至左            函数                 否                          
    safecall     从右至左            函数                 否