0

我在 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 函数的名称}”

我做错了什么?

4

3 回答 3

2

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

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

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

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

  1. 使用不带“-a”的“implib ”和
  2. 有这样声明的原型:

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

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

于 2012-08-22T19:10:13.867 回答
1

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

于 2009-07-12T02:41:46.190 回答
0

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

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

于 2009-07-01T16:55:13.387 回答