有关dll导出符号的问题。

ccmouse 2001-11-18 04:15:01
我做了个dll,测试程序与lib连接后编译一切正常。
但用dumpbin察看export table 后,发现输出函数在我定义的名字前后又多了许多奇怪的前后缀,which导致我在用loadlibrary显示连接时,必须在函数名中加入那些符号。请问这是怎么回事?是否有calling convention 导致?kernel32.dll中为何无此情况?
又,难道真像essential COM 第一章中那样,存在时间复杂度为O(1)的字符串匹配算法?如何个空间换时间法?
...全文
206 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
ccmouse 2001-11-19
  • 打赏
  • 举报
回复
啊!原来如此。
只看了platform sdk, 忘了vc部分了。
给分!
用LoadLibrary时与EXPORT内的名称写法一样。
ccmouse 2001-11-19
  • 打赏
  • 举报
回复
好,谢谢各位。试试看。
mousubin 2001-11-18
  • 打赏
  • 举报
回复
如果用LoadLibrary怎么写?
once168 2001-11-18
  • 打赏
  • 举报
回复
那叫修饰名----C++调用都是这样的,可从它知道它是哪个类的成员,以及形参的长度
如果你想不用修饰名,用C调用就行了---extern "C" 后面与你的调用相同
或在.def EXPORT段中导出也可 (如Julienjut(秋水)所说)
DoItFreely 2001-11-18
  • 打赏
  • 举报
回复
VC的符号修饰造成的,好象VC5的稍微好一些,但与VC6不兼容。
Julienjut 2001-11-18
  • 打赏
  • 举报
回复
_GetStrFromInt@12是编译时c函数的表示法

可以在def文件中直接输出的!
mousubin 2001-11-18
  • 打赏
  • 举报
回复
GZ.
ccmouse 2001-11-18
  • 打赏
  • 举报
回复
对,就是它。
还有,如果用extern "C" CALLBACK 申明,变成 _GetStrFromInt@12
ajun21cn 2001-11-18
  • 打赏
  • 举报
回复
再up一下,
是不是函数名成了这样
?GetStrFromInt@@YAPADH@Z (原本是GetStrFromInt)
ajun21cn 2001-11-18
  • 打赏
  • 举报
回复
再up一下,
是不是函数名成了这样
?GetStrFromInt@@YAPADH@Z (原本是GetStrFromInt)
ajun21cn 2001-11-18
  • 打赏
  • 举报
回复
我也遇到过此类问题
up 一下 。。。。 :)

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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