Сбои тестирования
После успешной компиляции приложения необходимо протестировать его на компьютере разработки и развернуть на целевом компьютере. Как правило, целевая машина не имеет установки MATLAB ® и требует установки среды выполнения MATLAB. Дистрибутив включает все файлы, необходимые для запуска приложения, включая исполняемый, развертываемый архив и среду выполнения MATLAB.
Сведения о распределении содержимого для определенных типов приложений и платформ см. в разделе Приложения пакета C/C + +.
Протестируйте приложение на компьютере разработки, запустив приложение в среде выполнения MATLAB, поставляемой с SDK™ компилятора MATLAB. Это позволит проверить правильность библиотечных зависимостей, возможность извлечения развертываемого архива и включение в архив всех файлов MATLAB, MEX и файлов поддержки, требуемых приложением. При возникновении ошибок при тестировании приложения вопросы, приведенные в столбце справа, могут помочь выявить проблему.
Можно ли выполнить приложение из MATLAB?
На компьютере разработки можно протестировать выполнение приложения, выдав !application-name по запросу MATLAB. Если приложение выполняется в MATLAB, но не извне, это может указывать на проблему с одной из системных переменных:
PATH
LD_LIBRARY_PATH
DYLD_LIBRARY_PATH
Начинает ли приложение выполнение и приводит ли оно к MATLAB или другим ошибкам?
Убедитесь, что при компиляции приложения были включены все необходимые файлы (см. readme.txt файл, созданный при компиляции, для получения более подробной информации).
Функции, вызываемые из основного файла MATLAB, автоматически включаются в MATLAB Compiler SDK, как и функции, включенные с помощью %#function прагматика. Однако функции, которые явно не вызываются, например, через EVAL, должны быть включены при компиляции с использованием -a переключатель mcc команда. Кроме того, любые файлы поддержки, такие как .mat, .txt, или .html файлы необходимо добавить в архив с помощью -a переключатель. Возможности MATLAB и связанных с ним панелей инструментов, которые могут быть скомпилированы, ограничены. Проверьте документацию, чтобы убедиться в правильности функций, используемых в файлах MATLAB приложения. Проверьте файл mccExcludedFiles.log на машине разработки. В этом файле перечислены все функции, вызываемые из приложения, которые невозможно скомпилировать.
Установлено ли несколько версий MATLAB?
Исполняемые файлы, созданные с помощью компонентов SDK компилятора MATLAB, предназначены для выполнения в среде, в которой установлено несколько версий MATLAB. Некоторые старые версии MATLAB могут быть не полностью совместимы с этой архитектурой.
В Windows убедитесь, что matlabroot\runtime\win64 версии MATLAB, в которой выполняется компиляция, появляется перед matlabroot\runtime\win64 других версий MATLAB, установленных на PATH переменная среды на компьютере.
Аналогично, в UNIX ® убедитесь, что динамические пути библиотеки (LD_LIBRARY_PATH в Linux ®) соответствует. Для этого сравните выходные данные !printenv по запросу MATLAB и printenv в командной строке. Использование этого пути позволяет использовать mcc из командной строки операционной системы.
Если вы тестируете общую библиотеку и приложение драйвера, вы установили среду выполнения MATLAB?
Все общие библиотеки, необходимые для общей библиотеки, содержатся во время выполнения MATLAB. Установка среды выполнения MATLAB необходима для любого конечного объекта развертывания.
Вы получили сообщение об ошибке об отсутствующей библиотеке DLL?
Сообщения об ошибках, указывающие на отсутствие DLL, например mclmcrrt7x.dll или mclmcrrt7x.so обычно вызваны неправильной установкой среды выполнения MATLAB. Также возможно, что среда выполнения MATLAB установлена правильно, но PATH,LD_LIBRARY_PATH, или DYLD_LIBRARY_PATH переменные установлены неправильно. Сведения об установке среды выполнения MATLAB на компьютере развертывания см. в разделе Установка и настройка среды выполнения MATLAB.
Внимание
Не решайте эти проблемы путем перемещения библиотек или других файлов в структуре папок среды выполнения MATLAB. Система MATLAB Runtime предназначена для размещения различных версий MATLAB Runtime, работающих на одной машине. Структура папок является важной частью этой функции.
Вы получаете ошибки при попытке запуска приложения общей библиотеки?
Вызов общих библиотек, созданных SDK компилятора MATLAB, требует правильной инициализации и завершения в дополнение к вызовам самих библиотек. Сведения о вызове общих библиотек см. в разделе Функции API компилятора MATLAB из C/C + +.
Некоторые ключевые моменты, которые следует учитывать, чтобы избежать ошибок во время выполнения:
Убедитесь, что вызовы mclinitializeApplication и libnameInitialize успешны. Первая функция позволяет создавать экземпляры среды выполнения MATLAB. Второй создает экземпляр среды выполнения MATLAB, необходимый для библиотеки с именем libname. Если эти вызовы не будут выполнены, приложение не будет выполнено.
Не использовать никакие mw- или mx-функции перед вызовом mclinitializeApplication. Сюда входят статические и глобальные переменные, инициализированные при запуске программы. Ссылка mw- или mx-функции перед инициализацией приводят к неопределенному поведению.
Не выполнять повторную инициализацию (вызов mclinitializeApplication) после завершения его с помощью mclTerminateApplication. mclinitializeApplication иlibnameInitialize функции должны вызываться только один раз.
Убедитесь в отсутствии вызовов библиотеки после mclTerminateApplication.
Убедитесь, что для вызова библиотеки и ее функций используется правильный синтаксис.
Поддерживает ли графическая карта системы графическое приложение?
В ситуациях, когда существующая аппаратная видеокарта не поддерживает графическое приложение, следует использовать программное обеспечение OpenGL ®. Библиотеки OpenGL отображаются для приложения путем добавленияmatlab/sys/opengl/lib/arch в LD_LIBRARY_PATH. Например:
setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH:matlab/sys/opengl/lib/arch
Правильно ли установлена OpenGL в системе?
При поиске библиотек OpenGL среда выполнения MATLAB сначала ищет путь к системной библиотеке. Если OpenGL там не найден, он будет использовать LD_LIBRARY_PATH для поиска библиотек. Если возникают сбои из-за того, что библиотеки OpenGL не найдены, можно добавить расположение библиотек OpenGL в LD_LIBRARY_PATH переменная среды. Например:
setenv LD_LIBRARY_PATH $LD_LIBRARY_PATH:matlab/sys/opengl/lib/glnxa64