[英]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-3
和libfftw3-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.