gpt4 book ai didi

delphi - VC工程中调用Delphi函数

转载 作者:行者123 更新时间:2023-12-03 15:52:28 25 4
gpt4 key购买 nike

我在delphi中创建了一个函数,如下所示:函数 CheckResult():整数;标准调用;导出;

编译器是Delphi 64,输出是CheckFunctions.dll

然后在 VC++ 项目(VS 2012)中,我写的:extern "C"__declspec(dllimport) int __stdcall CheckResult();

并在函数中使用它,然后我在 C++ 项目中得到编译器错误:

error LINK2019: unresolved external symbol __imp_CheckResult referenced in function *

我该怎么办?谢谢

最佳答案

您缺少 DLL 的导入库(.lib 文件)。这就是链接器给出该错误消息的原因。不幸的是,Delphi 不会生成 .lib 文件,在我看来这是一个弱点。

您可以通过以下任一方式解决问题:

  1. 与 LoadLibrary/GetProcAddress 链接。
  2. 生成合适的 .lib 文件。

选项 2 很简单。在 Visual Studio 中创建一个假的 DLL 项目。安排它导出与 Delphi DLL 相同的函数。使用空 stub 实现这些函数。使用 .def 文件而不是 __declspec(dllexport) 以避免导出的名称修饰。

这真的很明显。制作一个与真实 DLL 具有相同接口(interface)的假 DLL。相同的名称,相同的功能。假 DLL 不需要实现,因为您所做的只是让 MS 工具生成 Delphi 无法生成的 .lib 文件。

更多详细信息请参见:http://support.microsoft.com/kb/131313

<小时/>

FWIW 我相信 Delphi 导出修饰符被忽略。请改用导出子句。

关于delphi - VC工程中调用Delphi函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16839845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com