如何强制VC ++名称修改C ++ Builder?

时间:2011-04-18 06:16:26

标签: c++ export c++builder

是否可以从带有特定错位名称的C ++ Builder DLL导出函数?
我正在尝试构建一个C ++ Builder DLL来替换现有的VC++ DLL。问题是使用DLL的应用程序需要其中一个函数具有特定的受损名称。

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

"?_FUNCTIONNAME_@@YAHPAU_PARAM1_@@PAU_PARAM2_@@@Z"

当然,我可以使用错误的名称从我的DLL导出函数,但CodeGear坚持使用自己的名称修改方案。

是否可以强制C ++ Builder:

  1. 为函数使用特定的受损名称?

  2. 对特定函数使用VC ++名称修改?
  3. 请注意,我只想更改特定函数的修改,而不是DLL中的所有函数。

2 个答案:

答案 0 :(得分:2)

名称修改只是ABI的许多方面之一。事实上,它将更容易标准化。编译器在使用不同的ABI时会使用有目的的不同名称重整,以防止链接不兼容的对象。

你可以尝试给定一个函数的一件事是将它标记为extern "C",然后它将使用C的调用约定和相同的修改(通常根本没有修改或只是初始_ )。显然,不会处理其他问题(处理异常,vtbls的精确内容,哪些寄存器用于传递参数,标准库的精确定义,......)

答案 1 :(得分:2)

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