试图在netbeans c ++中导入dll

时间:2013-04-09 08:04:43

标签: c++ netbeans dll

我有一些问题要将FFTw3库包含到我的项目中。这是我第一次触摸dll,所以我很确定会有一些简单的东西丢失......

到目前为止我所做的是:

  • 设置Build / C ++编译器/包含目录 - 并将其设置为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文件创建的,如果是这样的话? (他们看起来和我一样,但不止一次,我对这个话题一无所知)

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

THX 麻姑_

2 个答案:

答案 0 :(得分:3)

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

接下来像这样设置库:

  • 项目属性, Build -> Linker
  • 其他图书馆目录:设置 directroypath ,其中.lib.dll - 文件
  • 图书馆: [...] -> Add Library 并在那里输入您的图书馆的名称,例如。如果库名为libFFTw3.dll,则只写FFTw3

如果要指定完整文件名,请使用Add Library File


编辑:

Windows(使用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:

  1. 打开Project Buildproperties( Properties -> Build
  2. C++ Compiler -> Includes directories -> [...] -> Add ,选择解压缩库的路径
  3. 转到 Linker 一个。 Additional Library Direcotries -> [...] -> Add ,选择解压缩库的路径(不是库!) 湾 Libraries -> [...] -> Add Library ,在那里写 fftw3-3 然后按确定
  4. 在Linux上,步骤是相同的​​,但您必须先构建库。

答案 1 :(得分:0)

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()创建计划