关于VC写的DLL在Delphi调用的问题

RealFox2000 2004-04-06 06:16:51
我用VC6做了一个基于MFC的DLL,只做了一个函数如下:
DWORD __stdcall CPlugin_VC6App::PluginVersion(),并且在.DEF文件中已经导出。
在DELPHI中我这样写(代码不太准确,大家看明白意思就行):
TPluginVersion = function():DWORD;stdcall;
PluginVersion: TPluginVersion;
pUnknown: TFarProc
pUnknown := GetProcAddress(hPluginFile, PChar('PluginVersion'));
if nil <> pUnknown then
PluginVersion := TPluginVersion(pUnknown);

然后我调用PluginVersion函数就会出错,但是如果把双方的调用方式全部换成__cdecl就OK了,很让我费解。各位大侠能否帮我解决一下这个问题呢,我必须用stdcall方式的。
...全文
37 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
RealFox2000 2004-04-07
  • 打赏
  • 举报
回复
自己解决了,把要导出的函数写在主线程类之外就可以了,也就是说把函数定义成全局的。
我想这可能和C++编译时对不同位置的函数的地址处理方式有关吧??不管怎样,反正解决了,哈哈!谢谢楼上两位仁兄的支持,给分咯!!
lazycat818 2004-04-07
  • 打赏
  • 举报
回复
VC端有问题: 改成
extern "C" long CALLBACK EXPORT func()形式
zhlwyy 2004-04-06
  • 打赏
  • 举报
回复
帮你顶!

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧