这就是我现在声明导出函数的方式:
extern "C" __declspec(dllexport)
Iexport_class* __stdcall GetExported_Class();
当 VS2008 为此编译源代码时,生成的 dll 在其导出表下包含:
_GetExported_Class@0
为了与其他编译器兼容,我需要将上面的装饰改成这样:
GetExported_Class
将调用约定更改为 __cdecl 会将其装饰成我想要的方式,但约定是错误的,因此我无法使用它。我需要它按照 __cdecl 的外观进行装饰,但改用 __stdcall。
有没有不使用 .def 文件来做到这一点的方法?有没有我可以传递给 link.exe 链接器的开关或选项,可以让它按照我想要的方式装饰导出名称?
谢谢
最佳答案
没有。所有 __stdcall 名称都以这种方式修饰。我很惊讶你有一些其他编译器不会期望 __stdcall 导出被装饰成这样。用 .def 覆盖链接器几乎是您所能做的一切 - 除非您想在生产后更改 PE 文件。
关于c++ - 如何在 VC++ 中更改 __stdcall 的导出名称修饰?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4498452/