2

我在将 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:错误:“fftw_create_plan”未在此范围内声明

我正在通过网络寻找并退出混乱。我是否还需要 .lib 文件,它们是从 .dev 文件创建的,如果需要的话?(它们对我来说看起来很相似,但又一次,我对这个话题一无所知)

所以我想知道你们中是否有人有知识并愿意帮助我让它运行......

谢谢magu_

4

2 回答 2

3

您必须将包含目录设置为您的头文件(例如fftw3.h)所在的路径。要检查您的标题是否由ctrl + 单击包含设置。

接下来像这样设置库:

  • 项目属性,Build -> Linker
  • 附加库目录:设置您的或所在的目录路径-不是文件.lib.dll
  • Libraries: [...] -> Add Library and type the name of your library there, eg. if the library is named libFFTw3.dll write only FFTw3.

Use Add Library File instead if you want to specify a full filename.


Edit:

Windows (using MinGW):

Download: http://www.fftw.org/install/windows.html

used code for this example (it's an example from the website):

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);

Setting up NetBeans:

  1. Open Project Buildproperties ( Properties -> Build )
  2. C++ Compiler -> Includes directories -> [...] -> Add, select path where you unpacked the library
  3. Go to Linker a. Additional Library Direcotries -> [...] -> Add, select path where you unpacked the library (not the library!) b. Libraries -> [...] -> Add Library, write fftw3-3 there and press Ok

On Linux the steps are the same, but you have to build the library before.

于 2013-04-09T11:49:22.810 回答
0

fftw_create_plan() is out of date in fftw3

fftw3.h manual is here

http://www.fftw.org/fftw3_doc/Complex-One_002dDimensional-DFTs.html#Complex-One_002dDimensional-DFTs

please use the new syntax fftw_plan_dft_1d() to create plan

于 2017-04-21T05:56:35.347 回答