【问题标题】:Linking libfftw3-3.lib in Visual Studio 2010在 Visual Studio 2010 中链接 libfftw3-3.lib
【发布时间】:2012-09-17 23:19:03
【问题描述】:

我正在尝试在 Visual Studio 2010 中创建一个使用 FFTW 的简单项目。链接库时遇到问题。

我已经按照their Windows page 的指示创建了 64 位 .lib 文件

我解压了他们下载的 64 位版本,并在该目录中运行了指定的工具。我已将其解压缩到一个名为“fftw”的文件夹中,作为我项目的兄弟。

在 Visual Studio 中,我创建了一个具有所有默认值的 C++ 控制台应用程序。默认构建类型是调试 Win32。我已将此行添加到配置属性→链接器C:\Users\XXXXX\Documents\Visual Studio 2010\Projects\fftw\libfftw3-3.lib

我还将 libfftw3-3.lib 添加到 Configuration Properties→Linker→Input 并在那里尝试了完整路径。

我包括 StdLib 复合体和 FFTW:

#include <complex>
#include "..\..\fftw\fftw3.h"

我的主要功能只有他们的示例代码:

int _tmain(int argc, _TCHAR* argv[])
{
  const int N = 1024;
  fftw_complex in[N], out[N];
  fftw_plan p;
  p = fftw_create_plan(N, FFTW_FORWARD, FFTW_ESTIMATE);
  fftw_one(p, in, out);
  fftw_destroy_plan(p);  
  return 0;
}

当我尝试构建时,我得到了这个:

1>------ Build started: Project: FFTTest, Configuration: Debug Win32 ------
1>  FFTTest.cpp
1>c:\users\XXXXX\documents\visual studio 2010\projects\ffttest\ffttest\ffttest.cpp(34): error C3861: 'fftw_create_plan': identifier not found
1>c:\users\XXXXX\documents\visual studio 2010\projects\ffttest\ffttest\ffttest.cpp(36): error C3861: 'fftw_one': identifier not found
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

谁能以我的方式告诉我错误?

【问题讨论】:

  • 使用 64 位版本库的计划发生了什么?您的测试项目是 32 位的。
  • 我刚刚尝试将 FFTW 的 32 位二进制文​​件用于我的 32 位项目。我犯了同样的错误。我从它们的 32 位包中提取了 .h、.dll 和 .def。然后这是我在提示下运行以创建 .lib 和 .exp C...Projects\fftw>lib /def:libfftw3-3.def /machine:x86 Microsoft (R) Library Manager Version 10.00.40219.01 版权所有(C ) 微软公司。版权所有。创建库 libfftw3-3.lib 和对象 libfftw3-3.exp

标签: c++ linker fftw


【解决方案1】:

找到了:fftw_create_plan()fftw_one() 是已从 FFTW3 中删除的函数。

您可能从FFTW2 tutorial 获得了代码,请参阅FFTW3 tutorial

【讨论】:

    【解决方案2】:

    不要在路径中使用反斜杠:

    #include "../../fftw/fftw3.h"
    

    C/C++ 中的反斜杠被解释为转义字符,要生成反斜杠,您需要将其加倍,但通常始终使用 / 来制作路径分隔符。

    【讨论】:

    • 没有骰子,查尔斯。相同的错误消息。此外,不重要,但反斜杠似乎工作正常。 fftw_complex 和 fftw_plan 是在 .h 文件中定义的,我没有收到这些标识符的任何错误。
    • 是在命名空间还是什么的?
    • 我不这么认为...我也没有在 .h 文件中看到这些定义。那是问题吗?列出 .lib/.exp 文件中的入口点的命令是什么?
    【解决方案3】:

    我试图将 FFTW v2 API 与 FFTW v3 库一起使用。他们的v3 tutorial page 上有一个工作示例。

    我上面引用库的步骤很好。您可能还希望将 FFTW DLL 放入可执行文件所在的目录中。

    【讨论】:

      猜你喜欢
      • 2012-07-03
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多