I am trying to compile a program with Netbeans (g++) that inlcudes Aquila, an open source libary. I followed the installation instructions.
But when trying to compile a small test program, I get this error
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.
}
The C file in the libs folder contains the definition of the functions.
The line that cause the actual error in OouraFft.cpp:
// let's call the C function from Ooura's package
cdft(2*N, -1, a, ip, w);
So I am thinking the external C file is not being linked with the project but included all the directories in the project directory. I have been googling for hours and can't figure it out.
As Answeror said you need to put libOoura_fft.a in the right place (
/usr/local/lib
is the default forlibAquila.a
).You also need to link to it as Chris Vandevelde said, but you should link to
-lOoura_fft
(first "O" capital). You should be linking with-lAquila
as wellJust wanted to clarify.
Up to git version 6f5d6b, Aquila's CMake config will generate static library by default. You should copy
/path-to-your-build-tree/lib/libOoura_fft.a
to/path-to-your-install-dir/lib/
, and link it to your test program.