У меня проблемы с записью MEX-файла в MATLAB, который может выполнять простую линейную операцию, например, взятие обратной матрицы.Мне успешно удалось использовать обратную матрицу, используя Visual Studio 2010, и я успешно создал MEX-файл, поэтому единственное, что у меня возникает, - это объединение этих двух концепций.Я попытался скомпилировать пример кода MEX, который я получил с сайта MathWorks, но безуспешно.
Вот что я попробовал,
Сохранил файл (переименовал его) Я получил от MathWorks как расширение .c и затем попытался скомпилировать его в MATLAB:
Создание библиотеки C: \ Users \ CIT \ AppData \ Local \ Temp \ mex_bKHjrl \ templib.x и объекта C: \ Users \ CIT \ AppData \ Local \ Temp \ mex_bKHjrl \ templib.exp eko1.obj: ошибка LNK2019: неразрешенный внешний символ dgesv, на который ссылается функция mexFunction eko1.mexw64: фатальная ошибка LNK1120: 1 неразрешенная внешняя оболочка
Также я попытался скомпилировать ее как .cppОднако в файле произошла ошибка, так как он не распознал функцию memcpy.
Поскольку они не работали, я написал свою собственную программу, которая использовала подпрограммы dgetrf и dgetri из библиотеки LAPACK, однако ошибкапроизошло:
c: \ users \ cit \ documents \ matlab \ f2c.h (16): ошибка C2371: «сложный»: переопределение;различные базовые типы C: \ Program Files \ MATLAB \ R2011b \ extern \ include \ lapack.h (39): см. объявление «сложного» c: \ users \ cit \ documents \ matlab \ f2c.h (17): ошибка C2371: «двойной комплекс»: переопределение;различные базовые типы C: \ Program Files \ MATLAB \ R2011b \ extern \ include \ lapack.h (40): см. объявление 'doublecomplex' eko2.cpp (29): ошибка C2057: ожидаемое константное выражение eko2.cpp (29):ошибка C2466: невозможно выделить массив постоянного размера 0 eko2.cpp (29): ошибка C2133: «ipiv»: неизвестный размер eko2.cpp (33): ошибка C2664: «dgetrf»: невозможно преобразовать параметр 1 из «целого числа *»to 'ptrdiff_t *' Типы, на которые указывают, не связаны;преобразование требует reinterpret_cast, приведение в стиле C или приведение в функциональном стиле eko2.cpp (34): ошибка C2664: 'dgetri': невозможно преобразовать параметр 1 из 'integer *' в 'ptrdiff_t *' Типы, на которые указывают, не связаны;преобразование требует reinterpret_cast, приведения в стиле C или приведения в функциональном стиле
Любая помощь, которую вы, ребята, предоставите мне, будет чрезвычайно признательна
Заранее спасибо.