首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何强迫VC++名称损坏C++Builder?

如何强迫VC++名称损坏C++Builder?
EN

Stack Overflow用户
提问于 2011-04-18 06:16:25
回答 2查看 430关注 0票数 0

是否可以从带有特定故障名称的C++Builder DLL导出函数?

我正在尝试构建一个C++Builder DLL来替换现有的VC++ DLL。问题是,使用DLL的应用程序希望函数之一具有特定的损坏名称。

也就是说,它期望调用该函数:

代码语言:javascript
复制
"?_FUNCTIONNAME_@@YAHPAU_PARAM1_@@PAU_PARAM2_@@@Z"

当然,我可以用一个损坏的名称从DLL导出函数,但是CodeGear坚持使用自己的名称损坏方案。

是否可以强制C++Builder:

  1. 对函数使用特定的损坏名称吗?

  1. 为特定函数使用VC++名称mangling?

请注意,我只想更改特定函数的损坏,而不是DLL中的所有函数。

EN

回答 2

Stack Overflow用户

发布于 2011-04-18 06:33:40

名称损坏只是ABI的许多方面之一。事实上,这将是更容易标准化的。编译器在使用不同的ABI以防止链接不兼容的对象时,有目的地使用不同的名称筛选器。

对于给定的函数,您可能尝试的一件事是将它标记为extern "C",然后它将使用C的调用约定和相同的损坏(通常一点也不损坏,或者只是一个初始的_)。显然,这不会解决其他问题(处理异常、vtbls的精确内容(用于传递参数的寄存器)、标准库的精确定义、.)。

票数 2
EN

Stack Overflow用户

发布于 2011-04-19 20:35:42

使用.def文件为导出的函数指定您自己的命名。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5699195

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档