题
当我们编译dll使用__的内部visual studio2008年编制职能名称的内部dll。
函数
虽然当我们编译了同样的dll使用的海湾合作委员会使用az-dev-cpp海湾合作委员会追加数的paramers的功能,因此名称的功能使用依赖沃克看起来像。
函数@numberOfParameters或==函数@8
你怎么告诉海湾合作委员会编译器,以去除@nn从出口中的符号dll?
解决方案
__ stdcall通过在开头添加下划线来装饰函数名,并在末尾添加参数的字节数(以@分隔)。
所以,一个功能:
void __stdcall Foo(int a, int b);
......将成为_Foo @ 8。
如果在.DEF文件的EXPORTS部分列出函数名称(未修饰),则会导出未修饰的文件。
也许这就是区别?
其他提示
只是使用 -Wl,--kill-at
在海湾合作委员会命令行,这将通过 --kill-at
到接头。
参考文献:
您还可以将 -Wl, - add-stdcall-alias
用于GCC中的链接器选项。这将确保存在两个函数名称(修饰和未修饰),并且可以用作别名。
不隶属于 StackOverflow