windowsdll的符号名称
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__cdecl func
学银网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⽂件格式
#pragma comment(linker, "/export:func=_func@8")
3.2. 链接过程
在链接时,以lib中的名称为准
3.3. arm 和 x64 体系
符号名字
在 arm 和 x64 体系下,所有 调⽤⽅式都被忽略,dll ⽂件中的符号名称上与 __cdecl ⼀样, 但是 lib ⽂件中的符号名称没有前⾯的下划线3.4. ⼯具
dumpbin,查看 .obj .lib ⽂件