我想編譯一個程序與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