如何将外部 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?的主要内容,如果未能解决你的问题,请参考以下文章
用 VS 编译器在 Qt 中编译 dll 以在 Borland 中使用