(This post regards compiling and linking to the FFTW library on
Windows. Apologies if this is off-topic here.)
I'm attempting to link an application to the FFTW .lib and .dll. I can
build and run a raw c++ sample application perfectly, as follows:
// testapp.cpp
#include "fftw3.h"
int main() {
const unsigned int INPUT_SIZE 100;
double* input = (double*)fftw_malloc(sizeof(double)*INPUT_SIZE);
fftw_complex* output =
(fftw_complex*)fftw_malloc(sizeof(fftw_complex) * INPUT_SIZE);
fftw_plan plan = fftw_plan_dft_r2c_1d(INPUT_SIZE, input, output,
FFTW_ESTIMATE | FFTW_UNALIGNED);
for (unsigned int ir = 0; ir != N; ++ir)
// fill input vector
fftw_execute(plan);
fftw_destroy_plan(plan);
fftw_free(input);
fftw_free(output);
}
build & link:
cl.exe /c testapp.cpp
link.exe /OUT:testapp.exe libfftw3-3.lib testapp.obj
However, when I move the application to the .NET CLR (that is, compile
with /clr), the app crashes with a System.TypeLoadException:
Unhandled Exception: System.TypeLoadException: Could not load type
fftw_plan_s from assembly qpFFT, Version=0.0.0.0, Culture=neutral,
PublicKeyToken=null.
at main()
Note that this is the same exact code. The only exception is adding
'/clr' to the compile options.
Is anyone familiar with using FFTW in a managed setting? I'd rather
just use the first example, but, unfortunately, I'm trying to integrate
it into an application that makes heavy use of the managed extensions.
Thanks,
Ryan