Тестирование отказов
После того, как вы успешно скомпилировали свое приложение, следующий шаг должен протестировать его на машине разработки и развернуть его на целевой машине. Обычно целевая машина не имеет 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
команда. Кроме того, любые файлы поддержки как .mat
txt
, или .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 для Развертывания.