关于DLL中函数调用的问题

Dylan326-QAZ 2010-10-24 03:39:09
GetProcAddress(hInst,"add"),获取函数失败,
而改成GetProcAddress(hInst,MAKEINTRESOURCE(1))成功

经常为引用函数名的时候返回为空
改成序号就成功,

这问题在哪里
...全文
60 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jenf 2010-10-24
  • 打赏
  • 举报
回复
嗯 应该是C++编译器函数名弄的,使用extern "C"试试
lonelyrains 2010-10-24
  • 打赏
  • 举报
回复
dll工程,为了维护函数的重载,函数发生名字改编,需要在dll工程中的函数名前加_stdcall,调用工程的编译器要设置为__stdcall方式,也就是Pascal方式调用,定义的函数指针要用WINAPI修饰,也就是_stdcall
freecodeMAN 2010-10-24
  • 打赏
  • 举报
回复
1.
开始-> 所有程序 ->visual studio组 -> VisualStudio Tools-> VisualStudio命令提示
进去一个dos界面, 然后在这里进入到dll的目录,

输入dumpbin -exports xxx.dll 查看输出信息中 xxx.dll下相应 函数被编译后的名称。
才是GetProcAddress(hInst,"aaa")aaa用的名称。

可能是 add, 也可能类似 @add&ud9#之类的。

2.
在输出dll时, 函数头 加上extern "C" 可以使编译名 固定为 add.

3.
在工程.dll文件同目录下 编写同名 xxx.def函数,来控制 输出的函数名,具体方法到网上查吧.
libinfei8848 2010-10-24
  • 打赏
  • 举报
回复
名字不要手动填入,用程序读出
mayudong1 2010-10-24
  • 打赏
  • 举报
回复
导出的时候加上extern "C"才能使导出函数名跟定义的一样
或者使用def文件导出
FoxBryant 2010-10-24
  • 打赏
  • 举报
回复
使用DLL导出函数查看工具检查一下导出的名字是否正确。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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