gpt4 book ai didi

c++ - 如何在 VC++ 中更改 __stdcall 的导出名称修饰?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:58 25 4
gpt4 key购买 nike

这就是我现在声明导出函数的方式:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com