windows dll 的符号名称

1. dll文件中的符号名称

1.1. __declspec(dllexport)

以 int func(int, int) 为例
C++__stdcall?func@@YGHHH@Z 
C++__cdecl?func@@YAHHH@Z 
C__stdcall_func@8 
C__cdeclfunc 

1.2. export

与export名称相同

2. lib文件中的符号名称

2.1. __declspec(dllexport)

以 int func(int, int) 为例
C++__stdcall?func@@YGHHH@Z__imp_?func@@YGHHH@Z
C++__cdecl?func@@YAHHH@Z__imp_?func@@YAHHH@Z
C__stdcall_func@8__imp__func@8
C__cdecl_func__imp__func

lib文件中每个符号有两个名字,不带__imp_前缀,不带__imp_前缀。

对于 C 语法的 __cdecl 调用方式,lib中的名称与dll中不一样,前面多了个下划线。

2.2. export

与export名称相同,同样有带__imp_前缀

3. 其他

3.1. export 方式

def文件格式

http://msdn.microsoft.com/en-us/library/28d6s79h.aspx

#pragma comment(linker, "/export:func=_func@8")

3.2. 链接过程

在链接时,以lib中的名称为准

3.3. arm 和 x64 体系

在 arm 和 x64 体系下,所有 调用方式都被忽略,dll 文件中的符号名称上与 __cdecl 一样, 但是 lib 文件中的符号名称没有前面的下划线

3.4. 工具

dumpbin,查看 .obj .lib 文件


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fighting Horse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值