Тестирование отказов
После того, как вы успешно скомпилировали свое приложение, следующий шаг должен протестировать его на машине разработки и развернуть его на целевой машине. Обычно целевая машина не имеет MATLAB® установка и требует, чтобы MATLAB Runtime был установлен. Распределение включает все файлы, которые требуются вашим приложением запуститься, которые включают исполняемый файл, развертываемый архив и MATLAB Runtime.
Смотрите Пакет Приложения C/C++ для получения информации о содержимом распределения для определенных типов приложения и платформ.
Протестируйте приложение на машине разработки путем запуска приложения против MATLAB Runtime, поставленного с MATLAB Compiler SDK™. Это проверит, что библиотечные зависимости правильны, что развертываемый архив может быть извлечен и что весь код 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 команда. Кроме того, любые файлы поддержки как .mattxt , или .html файлы должны быть добавлены к архиву с -a switch. Существует ограничение на функциональность MATLAB и сопоставленных тулбоксов, которые могут быть скомпилированы. Проверяйте документацию, чтобы видеть, что функции, используемые в файлах MATLAB вашего приложения, допустимы. Проверяйте файл mccExcludedFiles.log на машине разработки. Это списки файлов, которые все функции вызвали из вашего приложения, которое не может быть скомпилировано.
У вас есть несколько версий MATLAB установленными?
Исполняемые файлы, сгенерированные с помощью компонентов MATLAB Compiler SDK, спроектированы, чтобы запуститься в среде, где несколько версий MATLAB установлены. Некоторые более старые версии MATLAB не могут быть полностью совместимы с этой архитектурой.
На Windows гарантируйте что matlabroot\runtime\win64 из версии MATLAB, в котором вы компилируете, появляется перед matlabroot\runtime\win64 из других версий MATLAB, установленного на PATH переменная окружения на вашей машине.
Точно так же на UNIX®, гарантируйте что динамические пути к библиотеке (LD_LIBRARY_PATH на Linux®) соответствие. Сделайте это путем сравнения выходных параметров !printenv в подсказке MATLAB и printenv при приглашении оболочки. Используя этот путь позволяет вам использовать mcc из командной строки операционной системы.
Если вы тестируете разделяемую библиотеку и приложение драйвера, вы устанавливали MATLAB Runtime?
Все разделяемые библиотеки, требуемые для разделяемой библиотеки, содержатся в MATLAB Runtime. Установка MATLAB Runtime требуется для любой из целей развертывания. Для получения информации об установке MATLAB Runtime смотрите Установку и Сконфигурируйте MATLAB Runtime.
Вы получаете сообщение об ошибке о недостающем DLL?
Сообщения об ошибке, указывающие пропускающий DLLs, такие как mclmcrrtX_XX.dll или mclmcrrtX_XX.so обычно вызываются неправильной установкой MATLAB Runtime. Для получения информации об установке MATLAB Runtime смотрите Установку и Сконфигурируйте MATLAB Runtime.
Также возможно, что MATLAB Runtime установлен правильно, но PATH, LD_LIBRARY_PATH, или DYLD_LIBRARY_PATH переменная установлена неправильно. Для получения информации об установке переменных окружения смотрите Установленный Путь MATLAB Runtime для Развертывания.
Внимание
Не решайте эти задачи движущимися библиотеками или другими файлами в структуре папок MATLAB Runtime. Система MATLAB Runtime спроектирована, чтобы вместить различные версии MATLAB Runtime, работающие с той же машиной. Структура папок является важной частью этой функции.
Вы получаете ошибки при попытке запустить разделяемое приложение библиотеки?
Вызов сгенерированных совместно использованных библиотек MATLAB Compiler SDK требует правильной инициализации и завершения в дополнение к самим вызовам библиотеки. Для получения информации о вызове разделяемых библиотек смотрите Вызов API-функции MATLAB Compiler SDK с C/C++.
Некоторые ключевые пункты, чтобы рассмотреть, чтобы избежать ошибок во время выполнения:
Убедитесь, что вызовы mclinitializeApplication и libnameИнициализировать успешны. Первая функция включает конструкцию экземпляров MATLAB Runtime. Второе создает экземпляр MATLAB Runtime, требуемый библиотекой под названием libname. Если эти вызовы не будут успешны, ваше приложение не выполнится.
Не используйте mw- или mx-функции прежде, чем вызвать mclinitializeApplication. Это включает статические и глобальные переменные, которые инициализируются в программе, запускаются. Ссылка на mw- или mx-функции перед инициализацией приводят к неопределенному поведению.
Не повторно инициализируйте (вызовите mclinitializeApplication) после завершения его с mclTerminateApplication. mclinitializeApplication andlibnameИнициализировать функции должны быть вызваны только однажды.
Убедитесь, что у вас нет вызовов библиотеки после mclTerminateApplication.
Убедитесь, что вы используете правильный синтаксис, чтобы вызвать библиотеку и ее функции.
Видеокарта вашей системы поддерживает графическое приложение?
В ситуациях, где существующая аппаратная видеокарта не поддерживает графическое приложение, используйте программное обеспечение OpenGL. Библиотеки OpenGL отображаются для приложения путем добавления matlabroot/sys/opengl/lib/arch к пути к библиотеке. Например, на Linux, введите следующее в интерпретатор Bash:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:matlabroot/sys/opengl/lib/glnxa64
Для получения дополнительной информации об установке переменных окружения смотрите Установленный Путь MATLAB Runtime для Развертывания.
OpenGL правильно установлен в вашей системе?
При поиске библиотек OpenGL MATLAB Runtime сначала считает путь к системной библиотеке. Если OpenGL не найден там, он использует LD_LIBRARY_PATH переменная окружения, чтобы определить местоположение библиотек. Если вы получаете отказы из-за библиотек OpenGL, не находимых, можно добавить местоположение библиотек OpenGL к LD_LIBRARY_PATH переменная окружения. Например, на Linux, введите следующее в интерпретатор Bash:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:matlabroot/sys/opengl/lib/glnxa64
Для получения дополнительной информации об установке переменных окружения смотрите Установленный Путь MATLAB Runtime для Развертывания.