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

标签 c++ dll export name-decoration

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

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/

相关文章:

c# - C++ 使用 C# DLL。 InvokeHelper 的问题

python - 如何在 flask-admin 中导出具有关系的列

c++ - 静态常量字符串不会被初始化

c++ - Dijkstra 算法输出不正确

c++ - 如何让 AssImp 正常工作?

c# - 如何从 Visual Studio 2012 导出 C# 应用程序以在其他计算机上运行?

python - 如何将所有打印导出到 Python 中的 .txt 文件?

c++ - DrawText 在 Win7 x64 上的性能不佳

c++ - std::stringstream 与 std::string 用于连接多个字符串

java - GLPK Java 在 GLPK.new_intArray 上崩溃