比如dll中一个导出函数是:extern "C" bool __declspec(dllexport) func(char *inFileName, char *outFileName, long vcode)
是不是要加上__stdcall,加在什么位置呢?
还有其他需要注意的么?我如果想在Delphi里显示调用它,该怎么做?
能说得详细些么,谢谢

解决方案 »

  1.   

    function func(inFileName,outFileName:PChar;vcode:LongInt): BOOL; stdcall; external DllFile;
      

  2.   

    楼上的说得好像有点不对
    应该是先定义一个类型:
    type
      Tf=function(inFileName,outFileName:PChar;vcode:Integer): boolean; stdcall;然后再显示调用它,楼上写的是隐式调用
      

  3.   

    LZ是想动态调用吗?那就用LoadLibrary和GetProcAddress 来实现,当然必须要定义一个TYPE
    Tf=function(inFileName,outFileName:PChar;vcode:Integer): boolean; stdcall;注意如果VC中DLL的申明是ecl的,那就一定要用cdecl作为标识
      

  4.   

    一般用Cdecl的,而不是Stdcall的http://lysoft.7u7.net
      

  5.   

    extern "C" bool __declspec(dllexport) 用Cdecl,还是Stdcall?
    我在用的时候,用Stdcall,调用结果是对的,但返回时异常,这个异常抓不着,烦恼很久啊今天才知可用Cdecl,受益不少 谢谢楼上各位仁兄!!
      

  6.   

    如果DLL中用SendMessage()向Delphi发送消息,Delphi该如何接收呢?如何再Delphi中获得当前窗口的句柄呢?
      

  7.   

    又出现新问题:我调用了dll,一切正常,但是在Freelibrary()时却出现错误
    代码如下:
    try
     //调用dll,略
    finally
     FreeLibrary(Thand);//Thand为dll 句柄
    end;
    但是,如果在FreeLibrary(Thand);q前面加上一句ShowMessage(IntToStr(Thand));就不会发生错误
    这是为什么?好奇怪啊!