我有一些问题,包括一个FFTw3库到我的项目。这是我第一次接触dll的,所以我很确定,这将是一些简单的东西,是缺失的…
到目前为止我所做的是:
- 设置Build/c++ Compiler/Include Directories -并将其设置为lib文件夹
- 设置Bujld/Linker/Additional Library Directories -并添加相同的lib文件夹
之后,我尝试运行下面的演示脚本。
#include <fftw3.h>
int main(void) // Tutorial code from http://www.fftw.org/fftw2_doc/fftw_2.html
{
int N = 10;
fftw_complex in[N], out[N];
fftw_plan p;
p = fftw_create_plan(N, FFTW_FORWARD, FFTW_ESTIMATE);
fftw_one(p, in, out);
fftw_destroy_plan(p);
}
它找到了头文件fftw3.h,并且可以运行到(如果其余部分被注释掉)
p = fftw_create_plan(N, FFTW_FORWARD, FFTW_ESTIMATE);
这里写着:
main.cpp:19:57: error: ' fftw_create_plan '没有在this中声明范围
我在网上找,然后被弄糊涂了。我还需要.lib文件吗?它们是从.dev文件创建的吗?如果是这样的话?(对我来说,它们看起来很像,但我再说一次,我对这个话题一无所知)
所以我想知道你们中是否有人有知识并愿意帮助我使它运行…
谢谢magu_
您必须将include目录设置为头文件(例如fftw3.h
)所在的路径。要检查标题是否由设置,请按ctrl +在include.
接下来像这样设置库:
- 项目属性,
Build -> Linker
- 附加库目录:设置目录路径您的
.lib
或.dll
是- 不是一个文件 - Libraries:
[...] -> Add Library
并在那里键入名称。如果库名为libFFTw3.dll
,只写FFTw3
。
如果您想指定完整的文件名,请使用Add Library File
。
编辑:
Windows (using MinGW):
下载:http://www.fftw.org/install/windows.html
在这个例子中使用的代码(这是一个来自网站的例子):
fftw_complex *in, *out;
fftw_plan p;
size_t N = 3;
in = ( fftw_complex* ) fftw_malloc(sizeof (fftw_complex ) * N);
out = ( fftw_complex* ) fftw_malloc(sizeof (fftw_complex ) * N);
p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
fftw_execute(p); /* repeat as needed */
fftw_destroy_plan(p);
fftw_free(in);
fftw_free(out);
设置NetBeans:
- Open Project Buildproperties (
Properties -> Build
) -
C++ Compiler -> Includes directories -> [...] -> Add
,选择解压库的路径 转到
Linker
a. Additional Library Direcotries -> [...] -> Add
,选择解压缩库的路径(不是库!)b. Libraries -> [...] -> Add Library
,在此处写入 fftw3-3
,按Ok在Linux上的步骤是相同的,但是您必须先构建库。
fftw_create_plan()在fftw3中已过期
fftw3.h手册在这里
http://www.fftw.org/fftw3_doc/Complex-One_002dDimensional-DFTs.html Complex-One_002dDimensional-DFTs
请使用新的语法fftw_plan_dft_1d()创建计划