Прошло много времени, и мои настройки изменились, но теперь это работает для меня.Я подозреваю, что hoogamaphone был прав.У меня, вероятно, не было fllw dll в той же директории, что и mex dll (и это не было в моем пути).Фактически, 64-битный Matlab 2016a по-прежнему выдает предупреждение о невозможности найти mex-файл, когда фактически отсутствует зависимость.
Моя текущая установка использует компилятор Visual Studio 2013 C ++.дефолт.Как упоминалось на веб-сайте fftw, вам нужно создать файл lib для ссылок.Вы можете запустить командную строку Visual Studio из обычной командной строки, например, так:
"%VS120COMNTOOLS%VsDevCmd.bat"
Затем запустите следующую команду в каталоге с файлом def.
lib /machine:x64 /def:libfftw3f-3.def
И откомпилируйте.
mex mxCta.c cta.c -I../fftw -L../fftw -llibfftw3f-3.lib
Возможно, еще одна возможность заключается в том, что gnumex ввел некоторую зависимость в mex dll.Я больше не помню, использовал ли я gnumex, успешно тестируя другой код.При использовании cygwin, если вы не используете компилятор mingw (x86_64-w64-mingw32-gcc), вы получите зависимость от cygwin1.dll.
Наконец, если вы используете болееодин компилятор, убедитесь, что все флаги компилятора одинаковы (одинаковые соглашения о вызовах функций, ABI и т. д.).Кроме того, Mathworks изменил процедуру сборки mex.В недавнем проекте я скопировал mexconfig.xml в свой локальный каталог из
C: \ Users \ myuser \ AppData \ Roaming \ MathWorks \ MATLAB \ R2016a \ mex_C_win64.xml
и отредактировалфлаги компилятора выглядят так:
COMPFLAGS="/Zp8 /GR /W3 /EHs /nologo /MD /Gz /TC"
Если вы используете пользовательский файл сборки, используйте опцию -f.
mex mxCustom.c custom.lib -f mexconfig.xml