Estoy tratando de ejecutar el código FFTW en un archivo mex. Esto es estrictamente para el propósito de desarrollo y prueba. Después de buscar en Google, veo que otros han intentado hacer algo similar y han tenido problemas relacionados, pero no he encontrado ninguna solución. Al intentar ejecutar el archivo mex, Matlab me dice:Vinculación de FFTW en el archivo Matlab Mex
??? Error al usar ==> chirpTransform.mxCta Archivo MEX no válido '\ removed \ my \ directory \ + chirpTransform \ mxCta.mexw32': No se pudo encontrar el procedimiento especificado .
.
Estoy usando gnumex con MinGW para compilar el archivo mex porque LCC parece tener algunos problemas. He intentado usar el DLL de 32 bits del sitio de FFTW (http://www.fftw.org/install/windows.html). He intentado usar fftwf3.dll en el directorio bin de Matlab 2009b. Construí el dll desde la fuente usando Msys/MinGW. En todos los casos, los resultados son los mismos. En todos los casos, hice lo siguiente para generar el archivo lib.
c: \ gnumex \ mexdlltool.exe -d libfftw3f-3.DEF -D libfftw3f-3.DLL -l libfftw3f.lib --como C: \ MinGW \ bin \ as.exe
También intenté usar la herramienta visual studio lib.exe y experimenté con varias banderas mexdlltool.
Parece que puedo llamar directamente a funciones en fftwf3-3.dll utilizando la funcionalidad loadlibrary de Matlab. Dado que el DLL no parece ser el problema, intenté construir una versión estática de fftwf3 y vincularla directamente al archivo mex. ¡Obtuve los mismos resultados! Si elimino el código FFTW, el archivo mex funciona bien. Casi me he dado por vencido en este punto, y estoy a punto de idear métodos alternativos de prueba.
"LCC parece tener algunos problemas" - ¿a qué se refiere exactamente? –
puede publicar el código del MEX que está usando (partes relevantes al menos)? – Amro
Matlab realmente usa FFTW internamente para su FFT. Asegúrese de que su versión de FFTW no entre en conflicto con la que usa Matlab, o enlace en contra de la biblioteca de Matlab FFTW. – sfstewman