比如dll中一个导出函数是:extern "C" bool __declspec(dllexport) func(char *inFileName, char *outFileName, long vcode)
是不是要加上__stdcall,加在什么位置呢?
还有其他需要注意的么?我如果想在Delphi里显示调用它,该怎么做?
能说得详细些么,谢谢
是不是要加上__stdcall,加在什么位置呢?
还有其他需要注意的么?我如果想在Delphi里显示调用它,该怎么做?
能说得详细些么,谢谢
应该是先定义一个类型:
type
Tf=function(inFileName,outFileName:PChar;vcode:Integer): boolean; stdcall;然后再显示调用它,楼上写的是隐式调用
Tf=function(inFileName,outFileName:PChar;vcode:Integer): boolean; stdcall;注意如果VC中DLL的申明是ecl的,那就一定要用cdecl作为标识
我在用的时候,用Stdcall,调用结果是对的,但返回时异常,这个异常抓不着,烦恼很久啊今天才知可用Cdecl,受益不少 谢谢楼上各位仁兄!!
代码如下:
try
//调用dll,略
finally
FreeLibrary(Thand);//Thand为dll 句柄
end;
但是,如果在FreeLibrary(Thand);q前面加上一句ShowMessage(IntToStr(Thand));就不会发生错误
这是为什么?好奇怪啊!