我试图将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
。这对应于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
您可以查看这些行,这些行反映了您在步骤2-4中提供的设置
当然,必须首先在计算机上完全安装fftw3库。请在包管理器(unix)中查看包
libfftw3-3
和libfftw3-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。 ch:是libfft3-3.dll
。您也可以通过取消选中项目属性的
Use default buid command
翻盖中的C/C++ Builder
来调用自己的构建过程。这样,您可以提供自己的命令。您也可以通过取消选中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;
}