3

我正在尝试将我的项目与 fftw 链接,到目前为止,我已经编译它,但没有链接。正如该网站所说,我生成了所有 .lib 文件(即使我只使用双精度),并将它们复制到C:\Program Files\Microsoft Visual Studio 9.0\VC\lib.h 文件C:\Program Files\Microsoft Visual Studio 9.0\VC\include和 .dll 到C:\windows\system32.

我已经复制了教程程序,我得到的确切错误是:

1>hw10.obj : error LNK2019: unresolved external symbol __imp__fftw_free referenced in function "bool __cdecl test(void)" (?test@@YA_NXZ)
1>hw10.obj : error LNK2019: unresolved external symbol __imp__fftw_destroy_plan referenced in function "bool __cdecl test(void)" (?test@@YA_NXZ)
1>hw10.obj : error LNK2019: unresolved external symbol __imp__fftw_execute referenced in function "bool __cdecl test(void)" (?test@@YA_NXZ)
1>hw10.obj : error LNK2019: unresolved external symbol __imp__fftw_plan_dft_1d referenced in function "bool __cdecl test(void)" (?test@@YA_NXZ)
1>hw10.obj : error LNK2019: unresolved external symbol __imp__fftw_malloc referenced in function "bool __cdecl test(void)" (?test@@YA_NXZ)

那么,我的项目设置可能有什么问题?谢谢!

4

4 回答 4

4

我的情况

FFTW在 Visual Studio 2010 中使用

在我的 Windows XP 机器上使用 fftw-3.2.1-dll.zip 安装预编译的 FFTW 3.3.1 Windows DLL。

  1. 打开cmd窗口并转到lib.exe文件夹C:\Program Files\Microsoft Visual Studio 10.0\VC\bin>
  2. 类型lib /def:libfftw3-3.def
  3. 类型lib /def:libfftw3f-3.def
  4. 类型lib /def:libfftw3l-3.def
  5. 如果您在命令上有错误,请将任何mspdb80.dllmspdb100.dll文件复制到 bin 目录中。
  6. 您将获得 6 个文件

    libfftw3-3.exp、libfftw3-3.lib、libfftw3f-3.exp、libfftw3f-3.lib、libfftw3l-3.exp 和 libfftw3l-3.lib

    并将其复制到编程目录。

  7. 从 bin 目录中删除所有mspdb80.dllmspdb100.dll文件。

  8. 关闭项目并再次打开并再次重建它。

于 2012-04-11T13:10:41.877 回答
2

您是否真正链接到您正在构建的项目中的库?

Project -> Properties -> Linker -> Input -> Additional dependencies

您需要将库的文件名添加到该字段。

于 2010-04-28T06:42:51.480 回答
0

假设您实际上已经将您的项目与 lib 链接并且它不起作用,请使用/verbose:lib并粘贴该项目的输出和

dumpbin /exports fftw.lib | findstr fftw_free
于 2010-04-28T06:44:32.053 回答
0

我有类似的问题。帮助编译 fftw库的帮助是Compiling FFTW source in Visual Studio。实际上更密切的问题是编译我的应用程序 Win 32 并尝试使用 x64 -libraries。因此,请确保平台相同。

于 2015-03-27T14:09:53.287 回答