GCC用__stdcall编译一个dll

Cha*_*had 8 c++ gcc name-decoration

当我们在visual studio 2008中使用__stdcall编译一个dll时,dll中编译的函数名称是.

FunctionName

虽然当我们使用GCC使用wx-dev-cpp编译相同的dll时,GCC会附加函数所具有的参数数量,因此使用Dependency walker的函数名称如下所示.

FunctionName @ numberOfParameters或== FunctionName @ 8

你如何告诉GCC编译器从dll中的导出符号中删除@nn?

Ces*_*arB 6

只需-Wl,--kill-at在gcc命令行上使用,它将传递--kill-at给链接器.

参考文献:


Rog*_*mbe 5

__stdcall通过在开头添加下划线来装饰函数名,并在末尾添加参数的字节数(以@分隔).

所以,一个功能:

void __stdcall Foo(int a, int b);
Run Code Online (Sandbox Code Playgroud)

......会成为_Foo @ 8.

如果在.DEF文件的EXPORTS部分列出函数名称(未修饰),则将其导出为未修饰的.

也许这就是区别?