mex 파일에서 FFTW 코드를 실행하려고합니다. 이는 개발 및 테스트 목적으로 만 사용됩니다. 일부 인터넷 검색 결과, 다른 사람들이 비슷한 일을 시도하고 관련 문제가 있음을 알았지 만 해결책을 찾지 못했습니다. mex 파일을 실행할 때, Matlab은 나를 알려줍니다 :FFTW를 Matlab Mex 파일에 연결
??? 오류 사용 ==> 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을 사용하여 시도했다. Mysys/MinGW를 사용하여 소스에서 DLL을 만들었습니다. 모든 경우에 결과는 동일합니다. 모든 경우에 lib 파일을 생성하기 위해 다음을 수행했습니다.
as.exe \는 MinGW \ BIN \는 C : libfftw3f.lib --as C -l \ gnumex \ mexdlltool.exe -d libfftw3f-3.def libfftw3f -D-3.dll
나는 또한 visual studio lib.exe 도구를 사용해 보았고 다양한 mexdlltool 플래그로 실험했습니다.
Matlab의 loadlibrary 기능을 사용하여 fftwf3-3.dll의 함수를 직접 호출 할 수있는 것처럼 보입니다. DLL이 문제가 아니기 때문에 정적 인 fftwf3 버전을 만들고 mex 파일에 직접 연결하려고했습니다. 나는 같은 결과를 얻었다! FFTW 코드를 제거하면 mex 파일이 올바르게 실행됩니다. 나는이 시점에서 포기했다. 나는 대안 테스트 방법을 생각해 내야 만한다.
"LCC에는 몇 가지 문제가있는 것 같습니다."- 정확히 무엇을 의미합니까? –
MEX 코드를 게시 할 수 있습니까 (관련 부분 이상)? – Amro
Matlab은 실제로 FFT를 내부적으로 FFTW를 사용합니다. 귀하의 FFTW 버전이 Matlab이 사용하는 버전과 충돌하지 않거나 Matlab FFTW 라이브러리에 링크되어 있지 않은지 확인하십시오. – sfstewman