申请空间时,请使用GCHandle.Alloc,这里只是调用DLL,并没有将其静态连接的 .lib 文件
将libfftw3-3.dll 文件放到项目中
//申请空间
//IntPtr In_intPtr= FFT.malloc(N_FFT*8);
//IntPtr Out_intPtr= FFT.malloc(N_FFT * 8*2);
GCHandle In_intPtr = GCHandle.Alloc(DataIn_y1, GCHandleType.Pinned);
GCHandle Out_intPtr = GCHandle.Alloc(fftw_Complex, GCHandleType.Pinned);
//正变换
IntPtr plan = FFT.plan_r2c_ld(N_FFT, In_intPtr.AddrOfPinnedObject(), Out_intPtr.AddrOfPinnedObject(), 0);
//执行变换
FFT.execute(plan);//可能重复执行,
FFT.execute(plan);
//释放输入输出数组
FFT.destroy_plan(plan);
//释放空间
In_intPtr.Free();
Out_intPtr.Free();
TTF
public class FFT
{
#region FFTW 库调用申明
/// <summary>
/// Allocates FFTW-optimized