当我们在 Visual Studio 2008 中使用 __stdcall 编译 DLL 时,DLL 中的编译函数名称为:
函数名
尽管当我们使用 wx-dev-cpp 使用 GCC 编译相同的 dll 时,GCC 会附加该函数具有的参数数量,因此使用 Dependency walker 的函数名称如下所示。
函数名称@参数数量 或 == 函数名称@8
如何告诉 GCC 编译器从 dll 中的导出符号中删除 @nn?
__stdcall 通过在开头添加下划线和在结尾添加参数的字节数(用 @ 分隔)来修饰函数名称。
所以,一个函数:
void __stdcall Foo(int a, int b);
...将成为_Foo@8。
如果您在 .DEF 文件的 EXPORTS 部分中列出函数名称(未修饰),则它将以未修饰的方式导出。
也许这就是区别?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)