我想在mex文件中運行FFTW代碼。這完全是爲了開發和測試的目的。經過一些Google搜索之後,我發現其他人試圖做類似的事情並且遇到了相關的問題,但我還沒有找到任何解決方案。當試圖運行mex文件時,Matlab告訴我:將FFTW鏈接到Matlab Mex文件
???錯誤使用==> chirpTransform.mxCta無效的MEX文件 '\ removed \ my \ directory \ + chirpTransform \ mxCta.mexw32': 找不到指定的程序 。
。
我正在使用gnumex和MinGW來構建mex文件,因爲LCC似乎有一些問題。我曾嘗試使用FFTW站點的32位DLL(http://www.fftw.org/install/windows.html)。我曾嘗試在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文件運行良好。在這一點上,我剛剛放棄了,而且我很想提出其他測試方法。
「LCC似乎有一些問題」 - 你是什麼意思? – 2011-06-12 11:42:45
您可以發佈您正在使用的MEX的代碼(至少相關部分)嗎? – Amro 2011-10-19 07:14:33
Matlab實際上在內部使用FFTW進行FFT。確保您的FFTW版本與Matlab使用的版本不衝突,或者鏈接到Matlab FFTW庫。 – sfstewman 2012-06-29 02:12:45