当前位置:  开发笔记 > 编程语言 > 正文

GCC用__stdcall编译一个dll

如何解决《GCC用__stdcall编译一个dll》经验,为你挑选了2个好方法。

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

FunctionName

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

FunctionName @ numberOfParameters或== FunctionName @ 8

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



1> CesarB..:

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

参考文献:

http://sourceware.org/binutils/docs/ld/Options.html#Options

http://www.geocities.com/yongweiwu/stdcall.htm



2> Roger Lipsco..:

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

所以,一个功能:

void __stdcall Foo(int a, int b);

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

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

也许这就是区别?

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有