我想静态地链接来自C++Builder源代码的Delphi函数。我将.pas文件添加到C++Builder项目中。我尝试了以下声明:
在德尔菲:
procedure SayHi; stdcall;在C++Builder中:
extern "C" {
void __stdcall SayHi();
}所有模块都编译得很好,但是当我链接它时,我会得到以下错误:
[ilink64 Error] Error: Unresolved external 'SayHi' referenced from C:\DEV\PACKSWAP\WIN64\DEBUG\MAIN.O我遗漏了什么?
发布于 2014-01-30 23:42:20
当您在一个.pas项目中编译一个C++Builder文件时,会自动创建一个.hpp头文件,这样您就可以在需要时在C++代码中使用#include。不需要手动声明函数。
链接器错误是由于您在extern "C"端使用C++造成的。这影响了C++编译器如何发出该函数的名称损坏/修饰,因此它与Delphi编译器发出的名称mangling/装饰物不匹配。这就是链接器找不到函数实现的原因。删除extern "C",然后两个编译器都应该发出相同的名称mangling/装饰物,以允许链接器匹配它们。
https://stackoverflow.com/questions/21469064
复制相似问题