如何将外部 dll 库导入 Borland C++ 6?

Posted

技术标签:

【中文标题】如何将外部 dll 库导入 Borland C++ 6?【英文标题】:How to import external dll library to Borland C++ 6? 【发布时间】:2009-07-01 16:47:17 【问题描述】:

我在 Borland C++ 6 中构建了一个应用程序,我想导入外部的非 Borland 库(确切地说,FFTW,http://www.fftw.org)。

我已经下载了 fftw dll 文件,使用 implib.exe 程序构建了一个 Borland 已知的 lib 文件,在源代码中包含 fftw.h 并将 fftw.h 复制到 Borland/include,将 fftw.lib 复制到 Borland/lib 和.h、.dll 和 .lib 文件到我的项目文件夹中。

不幸的是,我收到了几个链接器错误,它们声称:

从源文件的名称引用的未解析的外部“FFTW 函数的名称”

我做错了什么?

【问题讨论】:

【参考方案1】:

我只是从一个类似的故事中讲述我是如何设法让它工作的......

有一个与 Delphi 7、VB.NET 和 Java 一起工作的 DLL(正在成功导入)。我想用 Borland C++ Builder 6 制作一个程序。我有函数原型和对这些语言进行导入的确切声明。合理吗?

我认为这很容易,但我陷入了许多死胡同,没有成功,一步一步的“盲目”指南对我不起作用。 IDE 或命令输出也无济于事。

几天后我尝试了(来自问题 4599357,尽管 DLL 不在 Visual C++ 中):

    使用“implib”没有“-a”和 有这样声明的原型:

extern "C" __declspec(dllimport) __stdcall int someDll_someFunction(someTypes someArgs, ...);

注意正常的函数原型在最后。如果您有“普通”原型,只需在源代码或头文件之前添加“extern "C" __declspec(dllimport) __stdcall”。 :) 而且我只有返回“int”的函数,这就是我把“int”放在那里的原因。

【讨论】:

【参考方案2】:

我认为您只缺少一步...将 implib 创建的 .lib 文件添加到您的项目中。

【讨论】:

【参考方案3】:

您确定 Borland 正在对外部函数进行正确的名称修改,并且标头已被 extern "c" 包围吗?您确定 Borland 确实在尝试链接 .lib 文件吗?确保编译器设置了详细选项。

如果这不起作用,为什么不从源代码构建 FFTW 而不是使用 DLL?

【讨论】:

extern "c" 是什么意思? Extern "c" 告诉链接器寻找用 C 而不是 C++ 编译的函数。因为您使用的是 C++ 编译器,所以链接器可能正在寻找错误的(损坏的)函数名。 wiki.answers.com/Q/What_is_the_use_of_extern_in_C

以上是关于如何将外部 dll 库导入 Borland C++ 6?的主要内容,如果未能解决你的问题,请参考以下文章

如何将外部库集成到Cocos Android项目中

尝试将 c++ dll 导入 c-sharp 代码

如何将.lib 导入.dll?

用 VS 编译器在 Qt 中编译 dll 以在 Borland 中使用

如何将托管 c++ 库导入 C# 应用程序(目标 .net 版本 3.5)

将 C# 类库导入 Visual C++