Tôi đang cố gắng chạy mã FFTW trong tệp mex. Điều này là đúng với mục đích phát triển và thử nghiệm. Sau một số googling, tôi thấy rằng những người khác đã cố gắng để làm một cái gì đó tương tự và đã có vấn đề liên quan, nhưng tôi đã không tìm thấy bất kỳ giải pháp. Khi cố gắng chạy tệp mex, Matlab cho tôi biết:Liên kết FFTW với tệp Matlab Mex
??? Lỗi khi sử dụng ==> chirpTransform.mxCta Tệp MEX không hợp lệ '\ đã xóa \ my \ directory \ + chirpTransform \ mxCta.mexw32': Quy trình được chỉ định không thể là được tìm thấy.
.
Tôi đang sử dụng gnumex với MinGW để tạo tệp mex vì LCC có vẻ có một số vấn đề. Tôi đã thử bằng cách sử dụng 32 bit DLL từ trang web FFTW (http://www.fftw.org/install/windows.html). Tôi đã thử bằng cách sử dụng fftwf3.dll trong thư mục bin Matlab 2009b. Tôi đã xây dựng dll từ nguồn sử dụng Msys/MinGW. Trong mọi trường hợp, kết quả đều giống nhau. Trong mọi trường hợp, tôi đã làm như sau để tạo tệp lib.
c: \ gnumex \ mexdlltool.exe -d libfftw3f-3.def -D libfftw3f-3.dll -l libfftw3f.lib --as C: \ MinGW \ bin \ as.exe
Tôi cũng đã thử sử dụng công cụ visual studio lib.exe và thử nghiệm với nhiều cờ mexdlltool khác nhau.
Dường như tôi có thể gọi trực tiếp các chức năng trong fftwf3-3.dll bằng chức năng tải thư viện của Matlab. Kể từ khi DLL xuất hiện không phải là vấn đề, tôi đã cố gắng xây dựng một phiên bản tĩnh của fftwf3 và liên kết nó trực tiếp vào tập tin mex. Tôi đã nhận được kết quả tương tự! Nếu tôi loại bỏ mã FFTW, tập tin mex chạy tốt. Tôi vừa bỏ cuộc vào thời điểm này, và tôi buộc phải đưa ra các phương pháp thử nghiệm thay thế.
"LCC có vẻ có một số vấn đề" - bạn có ý nghĩa gì? –
bạn có thể đăng mã của MEX bạn đang sử dụng (các bộ phận liên quan ít nhất) không? – Amro
Matlab thực sự sử dụng FFTW nội bộ cho FFT của nó. Đảm bảo rằng phiên bản FFTW của bạn không xung đột với phiên bản mà Matlab sử dụng hoặc liên kết với thư viện Matlab FFTW. – sfstewman