我正在尝试在 mex 文件中运行 FFTW 代码。这完全是为了开发和测试的目的。经过一番谷歌搜索,我看到其他人试图做类似的事情并遇到了相关的问题,但我没有找到任何解决方案。尝试运行 mex 文件时,Matlab 告诉我:
???使用 ==> chirpTransform.mxCta 时出错 无效的 MEX 文件 '\removed\my\directory\+chirpTransform\mxCta.mexw32':找不到指定的过程。
.
我正在使用带有 MinGW 的 gnumex 来构建 mex 文件,因为 LCC 似乎有一些问题。我曾尝试使用 FFTW 站点 ( http://www.fftw.org/install/windows.html ) 中的 32 位 DLL。我曾尝试在 Matlab 2009b bin 目录中使用 fftwf3.dll。我使用 Msys/MinGW 从源代码构建了 dll。在所有情况下,结果都是相同的。在所有情况下,我都执行了以下操作来生成 lib 文件。
c:\gnumex\mexdlltool.exe -d libfftw3f-3.def -D libfftw3f-3.dll -l libfftw3f.lib --as C:\MinGW\bin\as.exe
我还尝试使用 Visual Studio lib.exe 工具并尝试了各种 mexdlltool 标志。
看来我可以使用 Matlab 的 loadlibrary 功能直接调用 fftwf3-3.dll 中的函数。由于 DLL 似乎不是问题,我尝试构建 fftwf3 的静态版本并将其直接链接到 mex 文件中。我得到了同样的结果!如果我删除 FFTW 代码,则 mex 文件运行良好。在这一点上我几乎放弃了,我很想提出替代的测试方法。