我想编译一个程序与Netbeans(g ++),包括拉奎拉,an open source libary。我跟着the installation instructions。未定义的引用与外部C
但尝试编译一个小的测试程序时,我得到这个错误
In function `Aquila::OouraFft::fft(double const*)':OouraFft.cpp:(.text+0x24f):
undefined reference to `cdft'
OouraFft.h:
#include "Fft.h"
extern "C" {
void cdft(int, int, double *, int *, double *); //prototypes of offending function
void rdft(int, int, double *, int *, double *); //second one.
}
libs文件夹中的C文件中包含的函数的定义。
导致实际的错误在 OouraFft.cpp行:
// let's call the C function from Ooura's package
cdft(2*N, -1, a, ip, w);
所以我想到的是外部C文件不被与项目挂钩,但包括在项目目录中的所有目录。 我一直在谷歌搜索几个小时,无法弄清楚。
有该C文件的头文件?是,然后尝试使用'extern“C”{“MyCHeader.h” }' –
实际上,这看起来像一个链接错误而不是编译错误。你有没有想过为你的图书馆添加一个链接选项? EG如果它被称为'libfft',你会想要将'-lfft'添加到链接行。即使你有一个单独的源文件,并且认为你只是编译,你也会链接(也许作为编译步骤的一部分),并且需要指定链接到哪个库。 – abligh