首页 > 后端开发 > C++ > 如何导出没有名称修饰的 C DLL 函数?

如何导出没有名称修饰的 C DLL 函数?

Mary-Kate Olsen
发布: 2024-11-27 16:07:14
原创
869 人浏览过

How to Export C   DLL Functions without Name Decoration?

C DLL 修饰名称导出

您已经注意到,当使用模块定义 (.def) 从 C DLL 导出函数名称时文件或 C 样式 extern "C" __declspec(dllexport) 语法,导出的函数名称会用附加信息进行修饰。这是由于 C 名称修饰所致,该过程将有关函数参数和类型的信息编码到函数名称中。

要删除此额外的装饰,可以使用 #pragma comment 编译器指令。通过将以下行添加到您的代码中:

#pragma comment(linker, "/EXPORT:SomeFunction=_SomeFunction@@@23mangledstuff#@@@@")
登录后复制

您可以为要导出的函数指定修饰名称。在本例中,“SomeFunction@@@23mangledstuff#@@@@”是函数“SomeFunction”的修饰名称。

或者,您可以使用以下编译指示自动生成修饰名称:

#pragma comment(linker, "/EXPORT:\"" __FUNCTION__ ""= "" __FUNCDNAME__)
登录后复制

此编译指示使用 FUNCTIONFUNCDNAME 宏,用于将函数名称及其修饰版本插入到编译指示中。

使用这些编译指示中的任何一个将在使用 dumpbin.exe 查看时产生以下输出:

SomeFunction
登录后复制

此方法允许您保留导出函数的功能,同时删除函数名称中不需要的修饰。

以上是如何导出没有名称修饰的 C DLL 函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板