我想静态链接C++ Builder源代码中的Delphi函数.我将.pas文件添加到C++ Builder项目中.我尝试了以下声明:
在德尔福:
procedure SayHi; stdcall;
Run Code Online (Sandbox Code Playgroud)
在C++ Builder中:
extern "C" {
void __stdcall SayHi();
}
Run Code Online (Sandbox Code Playgroud)
所有模块编译正常,但当我链接它时,我收到以下错误:
[ilink64 Error] Error: Unresolved external 'SayHi' referenced from C:\DEV\PACKSWAP\WIN64\DEBUG\MAIN.O
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
.pas在C++ Builder项目中编译文件时,.hpp会自动创建一个头文件,然后您可以#include在需要的C++代码中创建该头文件.无需手动声明该功能.
链接器错误是由于您extern "C"在C++端的使用.这会影响C++编译器为该函数发出名称修改/装饰的方式,因此它与Delphi编译器发出的名称修改/修饰不匹配.这就是链接器无法找到函数实现的原因.删除extern "C",然后两个编译器应发出相同的名称mangling/decoration,以允许链接器匹配它们.
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |