У меня возникли проблемы с записью файла MEX в MATLAB, который может выполнять простую линейную операцию, например, принимать обратную матрицу. Я успешно удалил обратную матрицу с помощью Visual Studio 2010 и успешно создал MEX-файл, поэтому единственное, что у меня возникает, - это совместное использование этих двух понятий. Я попытался скомпилировать код примера MEX, который я получил с сайта MathWorks, но не повезло.Как использовать CLAPACK, BLAS или LAPACK в файле mex?
Вот что я пытался,
Сохраненный файл (переименованный его) я получил от 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 неразрешенные внешние
Также я пытался скомпилировать его как .c файла произошла однако ошибка, потому что оно не признает функцию тетсра.
Поскольку это не работает, я написал свою собственную программу, которая использовала подпрограммы dgetrf и dgetri из библиотеки LAPACK произошедшей однако ошибка:
C: \ Users \ соч \ документы \ MatLab \ f2c .h (16): ошибка C2371: 'complex': redefinition; различные базовые типы C: \ Program Files \ MATLAB \ R2011b \ extern \ include \ lapack.h (39): см. объявление 'complex' c: \ users \ cit \ documents \ matlab \ f2c.h (17) : ошибка C2371: «doublecomplex»: переопределение; различные базовые типы 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 от 'integer *' до 'ptrdiff_t *' Указанные типы не связаны; для преобразования требуется reinterpret_cast, литье в стиле C или литье в стиле функции eko2.cpp (34): ошибка C2664: 'dgetri': невозможно преобразовать параметр 1 из 'integer *' в 'ptrdiff_t *' Указанные типы не связаны; преобразование требует reinterpret_cast, в стиле С литой или функция стиля бросание
Любая помощь вы, ребята, дайте мне бы очень оценили
Спасибо заранее.