gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 05:39:27 31 4
gpt4 key购买 nike

我正在尝试将 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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com