c++ - 如何将 fftw3 链接到 eclipse mars c++?

标签 c++ eclipse

我正在尝试将 fftw3 库链接到 eclipse,但到目前为止没有成功。我将头文件 fftw3.h 包含在“路径和符号”中,它能够识别 fft_complex 和 fft_plan 但这些未被引用

__imp_fftw_destroy_plan 的 undefined reference ' undefined reference __imp_fftw_execute' 对 __imp_fftw_malloc' 的 undefined reference undefined reference __imp_fftw_plan_dft_r2c_1d'

请帮忙。我是 Eclipse 的新手

最佳答案

这些函数 (__imp_fftw_destroy_plan) 未在 header 中定义:必须提供 fftw 库的路径。如果您希望继续使用 eclispe 的构建实用程序,请完成以下步骤:

1) 右键单击​​项目名称并单击Properties

2) 在 C/C++ General/Path and Symbols 中,单击 Include 选项卡。您已经为 C++ 添加了 fftw3.h 的路径。这对应于 g++ 的包含搜索路径,-I 标志。

3) 单击Library Paths 面板并将路径添加到libfftw3.a。这对应于g++的库搜索路径-L

4) 单击Libraries 面板并添加fftw3。这样,-lfftw3 被添加到构建过程的链接步骤,g++ 将查找 libfftw3.a

在构建项目时,以下命令会出现在控制台窗口中:

make all 
Building file: ../src/fftwineclipse.cpp
Invoking: GCC C++ Compiler
g++ -I/home/.../fftw_bidon/include -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/fftwineclipse.d" -MT"src/fftwineclipse.d" -o "src/fftwineclipse.o" "../src/fftwineclipse.cpp"
Finished building: ../src/fftwineclipse.cpp

Building target: fftwineclipse
Invoking: GCC C++ Linker
g++ -L/home/.../fftw_bidon/lib -o "fftwineclipse"  ./src/fftwineclipse.o   -lfftw3
Finished building target: fftwineclipse

您可以查看这些反射(reflect)您在步骤 2-4 中提供的设置的行

当然,fftw3 库必须先完全安装在您的计算机上。在包管理器 (unix) 中查看包 libfftw3-3libfftw3-dev(静态库 libfftw3.a)。如果您在 Windows 上使用 MinGW,MinGW supports libraries named according to the "libfftw3.lib" and "libfftw3.dll" conventions, in addition to the normal "libfftw3.a" convention common on *nix systems.参见 here获取预编译的 FFTW 3.3.4 Windows DLL。看出来了:它是 libfft3-3.dll

您也可以通过在项目属性的 C/C++ Builder 面板中取消勾选 Use default buid command 来调用您自己的构建过程。这样,您就可以提供自己的命令。您还可以通过取消选中 generate Makefiles automatically 并修改构建位置来编写自己的 makefile。

这是创建项目并测试 fftw 是否正确链接的最短代码:

#include <iostream>

#include <fftw3.h>

using namespace std;



int main() {

    int N=42;
    fftw_complex in[N], out[N];
    fftw_plan plan = fftw_plan_dft_1d(N,in,out,FFTW_FORWARD,FFTW_ESTIMATE);
    fftw_execute(plan);
    fftw_destroy_plan(plan);
    cout << "end" << endl;
    return 0;
}

关于c++ - 如何将 fftw3 链接到 eclipse mars c++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37475605/

相关文章:

android - 错误 : No resource found that matches the given name (at 'theme' with value '@style/AppTheme' )

Java程序由控制台控制?

java - 无法将 Eclipse 创建的 WAR 文件正确部署到 Tomcat

c++ - 无法在 Visual Studio 2013 中正确创建 C++ 项目

c++ - 向控制台应用程序发送 Windows 消息

c++ - 在任何函数外部声明的可变大小类型

c++ - random_shuffle 使用 rand() 可以吗?

eclipse - Eclipse中Clojure的代码格式化实用程序

java - 当我尝试写入文件时,为什么 Eclipse IDE 会给出终止错误?

c++ - 搜索二叉搜索树后输出错误