繁体   English   中英

如何将fftw3链接到Eclipse Mars C ++?

[英]how to link fftw3 to eclipse mars c++?

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

未定义引用__imp_fftw_destroy_plan' undefined reference to __imp_fftw_execute'未定义引用__imp_fftw_malloc' undefined reference to __imp_fftw_plan_dft_r2c_1d'

请帮忙。 我是新来的蚀

这些函数( __imp_fftw_destroy_plan )未在标头中定义:必须提供fftw库的路径。 如果您希望继续使用eclispe的构建工具,请按照以下步骤操作:

1)右键单击项目名称,然后单击Properties

2)在“ C / C ++常规/路径和符号”中,单击“ Include襟翼。 您已将路径添加到C ++的fftw3.h中。 这对应于g ++的包含搜索路径-I标志。

3)单击“ Library Paths libfftw3.a然后将路径添加到libfftw3.a 这对应于g ++的库搜索路径-L

4)单击Libraries fftw3然后添加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

您可以查看这些行,这些行反映了您在步骤2-4中提供的设置

当然,必须首先在计算机上完全安装fftw3库。 请参阅软件包管理器(unix)中的软件包libfftw3-3libfftw3-dev (静态库libfftw3.a )。 如果在Windows上使用MinGW ,则除了* nix系统上常见的常规“ libfftw3.a”约定外MinGW还支持根据“ libfftw3.lib”和“ libfftw3.dll”约定命名的库。 请参阅此处以获取预编译的FFTW 3.3.4 Windows DLL。 快点出来: libfft3-3.dll

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

这是创建项目并测试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;
}

我将使用cmake创建项目。 这是我使用的fftw部分(与VC一起使用,但也应与Eclipse一起使用)。

PS:是的,我有点懒于创建一个项目,在调试时不需要手动更改路径

set (FFTW_DIR "C://fftw-3.3.4-dll32")
...
find_path (FFTW_DIR fftw3.h)
INCLUDE_DIRECTORIES(${FFTW_DIR})
link_directories("${FFTW_DIR}")
...

TARGET_LINK_LIBRARIES(libfftw3-3 libfftw3f-3 libfftw3l-3)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM