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