读书人

VC8(2005) 编译的DLL 无法使用解决方法

发布时间: 2012-03-07 09:13:51 作者: rapoo

VC8(2005) 编译的DLL 无法使用
各位大侠, 我泣血百拜

我用VC6写了DLL 使用供别人 Delphi调用 没问题
VC 定义

extern "C" int _declspec(dllexport) TestC(int i); (默认调用方式 cdecl)

delphi 调用
function TestC(i:integer):integer;cdecl; external ’MyDll.dll’;


后来,由于某些C++的API的缘故,我使用VC8(VC2005),头文件(定义)没改,结果Delphi不能调用了,
无论用stdcall 还是cdecl 都不行,真是烦人

现象是 不指定STDCALL 的话,Delphi调用程序,死在那里
制定STDCALL —ELPHI的 cdecl 相应的改为stdcall),就报找不到方法,不知哪位大侠有解决之道?

[解决办法]
采用__stdcall标准调用方式,可以避免此问题,否则在Delphi内的调用函数应该修改在每个调用函数前加"_"或"@",具体的话建议楼主用execope软件可以查到你的dll导出函数.

C/C++ code
extern "C" int _stdcall(dllexport) TestC(int i);
[解决办法]
你用工具看下DLL里函数的名称
[解决办法]
可能是编译选项的问题,参考:
http://topic.csdn.net/u/20100312/14/b2534039-f094-4719-accd-5b81f9fad431.html


[解决办法]
八成是函数名的问题,VC输出的函数名确实前面会加@之类的字符

读书人网 >.NET

热点推荐