mex ファイルで FFTW コードを実行しようとしています。これは厳密に開発とテストを目的としています。グーグルで調べたところ、他の人が同様のことを試み、関連する問題を抱えていることがわかりましたが、解決策は見つかりませんでした。mex ファイルを実行しようとすると、Matlab から次のように通知されます。
??? エラー使用 ==> chirpTransform.mxCta 無効な MEX ファイル '\removed\my\directory\+chirpTransform\mxCta.mexw32': 指定されたプロシージャが見つかりませんでした。
.
LCC には問題があるように見えるため、MinGW で gnumex を使用して mex ファイルをビルドしています。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
また、ビジュアル スタジオの lib.exe ツールを使用してみたり、さまざまな mexdlltool フラグを試したりしました。
Matlab の loadlibrary 機能を使用して、fftwf3-3.dll の関数を直接呼び出すことができるようです。DLL が問題ではないように見えるので、fftwf3 の静的バージョンをビルドし、それを mex ファイルに直接リンクしてみました。私は同じ結果を得ました!FFTW コードを削除すると、mex ファイルは正常に動作します。私はこの時点でほとんどあきらめており、別のテスト方法を考え出すのに苦労しています.