首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C++Builder项目中静态链接Delphi过程

如何在C++Builder项目中静态链接Delphi过程
EN

Stack Overflow用户
提问于 2014-01-30 22:47:05
回答 1查看 192关注 0票数 1

我想静态地链接来自C++Builder源代码的Delphi函数。我将.pas文件添加到C++Builder项目中。我尝试了以下声明:

在德尔菲:

代码语言:javascript
复制
procedure SayHi; stdcall;

在C++Builder中:

代码语言:javascript
复制
extern "C" {
    void __stdcall SayHi();
}

所有模块都编译得很好,但是当我链接它时,我会得到以下错误:

代码语言:javascript
复制
[ilink64 Error] Error: Unresolved external 'SayHi' referenced from C:\DEV\PACKSWAP\WIN64\DEBUG\MAIN.O

我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-30 23:42:20

当您在一个.pas项目中编译一个C++Builder文件时,会自动创建一个.hpp头文件,这样您就可以在需要时在C++代码中使用#include。不需要手动声明函数。

链接器错误是由于您在extern "C"端使用C++造成的。这影响了C++编译器如何发出该函数的名称损坏/修饰,因此它与Delphi编译器发出的名称mangling/装饰物不匹配。这就是链接器找不到函数实现的原因。删除extern "C",然后两个编译器都应该发出相同的名称mangling/装饰物,以允许链接器匹配它们。

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

https://stackoverflow.com/questions/21469064

复制
相关文章

相似问题

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