Как создать exe файл matlab

Как создать exe файл matlab

MATLAB предоставляет встроенные средства для компиляции скриптов и функций в автономные исполняемые файлы формата .exe с помощью инструмента MATLAB Compiler. Это особенно актуально при необходимости распространения приложения среди пользователей, не имеющих установленного MATLAB. Компиляция позволяет избежать раскрытия исходного кода и обеспечивает стабильную работу программы в заданной среде исполнения.

Для создания EXE-файла требуется наличие установленного пакета MATLAB Compiler, входящего в состав MATLAB, начиная с редакции R2016b и выше. Процесс начинается с подготовки основной функции, которую необходимо оформить в виде отдельного файла с именем, совпадающим с названием функции. Внутри не допускается использование команд, требующих интерактивного ввода без соответствующей обработки, поскольку это приведёт к сбою при выполнении EXE.

Сборка выполняется с помощью команды mcc. Например, mcc -m mainFunction.m создаёт исполняемый файл на основе указанной функции. Дополнительно можно указать внешние файлы и параметры командной строки, если они используются в логике приложения. В результате компиляции формируется набор файлов, включая EXE и вспомогательные библиотеки, которые необходимо распространять совместно либо упаковывать в инсталлятор.

Для запуска EXE-файла на целевой машине требуется установить MCR (MATLAB Runtime) соответствующей версии. Убедитесь, что она соответствует версии MATLAB, использованной при компиляции. MCR можно загрузить с официального сайта MathWorks и распространять вместе с приложением, соблюдая условия лицензии.

Настройка среды MATLAB Compiler для создания EXE

Настройка среды MATLAB Compiler для создания EXE

Перед компиляцией необходимо убедиться, что установлен MATLAB Compiler. Проверить наличие можно командой ver в командном окне. В списке установленных продуктов должен присутствовать «MATLAB Compiler».

Установите путь к проектной папке с исходными файлами с помощью команды cd. Все файлы, используемые в проекте, включая функции, GUI, вспомогательные скрипты и зависимости, должны находиться в этой директории или быть явно указаны при сборке.

Откройте MATLAB Compiler через команду compiler.build.standaloneApplication или через графический интерфейс: вкладка AppsApplication Compiler.

В графическом интерфейсе укажите главный файл (например, main.m) в поле Main file. В разделе Files required for your application to run добавьте все вспомогательные файлы, не обнаруженные автоматически. Убедитесь, что пути к этим файлам корректны.

В разделе Additional runtime settings отключите опцию «Runtime downloaded from web», если требуется офлайн-дистрибутив. В этом случае компилятор включит MATLAB Runtime в установочный пакет, увеличив его размер, но исключив необходимость подключения к интернету.

Выберите версию MATLAB Runtime, совместимую с целевой системой. Для этого используется параметр 'RuntimeVersion' при вызове compiler.build.standaloneApplication. Пример:

compiler.build.standaloneApplication('main.m', 'RuntimeVersion', '9.12')

При необходимости задать имя выходного EXE-файла, используйте параметр 'ExecutableName':

compiler.build.standaloneApplication('main.m', 'ExecutableName', 'MyApp')

Проверьте конфигурацию опции Output folder. Убедитесь, что путь не содержит кириллических символов и пробелов. Это исключает ошибки при запуске сборки.

Перед компиляцией сохраните проект с расширением .prj для повторного использования и автоматизации сборки через скрипты.

Подготовка основного скрипта или функции к компиляции

Перед компиляцией необходимо убедиться, что основной файл – функция или скрипт – соответствует требованиям MATLAB Compiler. Файл должен иметь расширение .m и начинаться с чётко определённой точки входа. Для функций это заголовок с именем, аргументами и переменными выхода. Для скриптов – отсутствие зависимостей от переменных внешней рабочей области.

Избегайте использования команд clear, clc, close all и других, влияющих на среду выполнения, так как поведение таких команд в исполняемом файле может отличаться от среды MATLAB. Все пути к файлам и директориям должны быть заданы явно с помощью fullfile или абсолютных путей – относительные пути могут быть интерпретированы некорректно в скомпилированном приложении.

Проверьте, что используемые функции и файлы находятся в текущей рабочей папке проекта или включены в список зависимостей. Использование функции matlab.codetools.requiredFilesAndProducts позволяет выявить все внешние зависимости. Удалите все вызовы uigetfile, uiputfile, input и других интерактивных элементов, если вы не реализуете пользовательский интерфейс через GUIDE или App Designer – они требуют отдельной обработки при компиляции.

Если скрипт зависит от переменных конфигурации, перенесите их в отдельный .mat или .json файл и загрузите программно через load или jsondecode(fileread(...)). Это обеспечит корректную работу независимо от среды запуска. Исключите использование eval, так как он затрудняет анализ зависимостей и может быть недоступен в скомпилированной версии.

Убедитесь, что весь код поддерживается MATLAB Compiler: некоторые функции, например, связанные с Java, ActiveX и COM-объектами, не компилируются. Проверку можно выполнить с помощью утилиты mcc -n, которая покажет возможные проблемы без компиляции.

Указание входных и выходных параметров при сборке

Указание входных и выходных параметров при сборке

Для корректной генерации EXE-файла в MATLAB с помощью Application Compiler необходимо явно задать сигнатуру входных и выходных параметров основной функции. Это критически важно при использовании нескольких аргументов или комплексных структур данных.

В окне Main File выберите основной файл, содержащий функцию, которую требуется скомпилировать. После этого появится поле Additional files required for your application to run – добавьте все вспомогательные файлы, необходимые для выполнения функции, включая скрипты, MAT-файлы и пользовательские классы.

Нажмите Settings и перейдите в раздел Runtime Settings. Здесь задается количество входных и выходных аргументов. Если функция, например, имеет вид [out1, out2] = myFunc(in1, in2, in3), то:

– Установите Number of input arguments: 3

– Установите Number of output arguments: 2

Порядок аргументов должен строго соответствовать определению функции. Для передачи строковых и числовых параметров используйте соответствующие типы при вызове из командной строки Windows: строки – в кавычках, числовые значения – без.

При компиляции функции, использующей переменное число входов или выходов (varargin, varargout), фиксируйте максимальное ожидаемое количество параметров. Иначе при вызове EXE-файла возможна ошибка несоответствия сигнатуры.

После задания параметров убедитесь, что тестовый вызов функции в MATLAB работает с теми же аргументами, которые будут использоваться в EXE. Это позволяет заранее выявить ошибки типов данных или неверную интерпретацию параметров в среде выполнения.

Работа с зависимостями и дополнительными файлами

Работа с зависимостями и дополнительными файлами

При создании EXE-файла в MATLAB через Application Compiler, необходимо явно указать все зависимости, которые не входят в состав основного кода. Автоматическое определение не всегда корректно выявляет функции, вызываемые динамически (например, через feval или eval), поэтому такие случаи требуют ручного добавления файлов в проект.

Файлы данных, такие как .mat, .txt, .csv или любые другие, используемые функцией load или fopen, также должны быть добавлены в секцию «Files required for your application to run» при компиляции. Их расположение после компиляции меняется, поэтому необходимо использовать функцию ctfroot или fullfile(ctfroot, 'имя_файла') для корректного доступа к ним во время выполнения.

Если приложение зависит от сторонних M-файлов, библиотек или классов, которые не входят в MATLAB Runtime, они должны быть включены вручную. Это касается также файлов, находящихся вне текущей папки проекта или не добавленных в путь MATLAB (addpath не влияет на содержимое EXE).

При использовании пользовательских GUI (например, созданных в GUIDE или App Designer), необходимо удостовериться, что все файлы .fig и .mlapp добавлены в проект. Для App Designer также требуется указать зависимости, используемые внутри компонента, если они не определены явно.

Рекомендуется использовать команду matlab.codetools.requiredFilesAndProducts перед компиляцией для получения списка всех зависимостей. Полученные файлы следует сверить с содержимым проекта и добавить недостающие вручную.

Проверка работы EXE-файла вне MATLAB

Проверка работы EXE-файла вне MATLAB

После компиляции MATLAB-программы в исполняемый EXE-файл с помощью mcc, необходимо убедиться в его корректной работе на целевой системе. Прежде всего, проверьте наличие установленного MATLAB Runtime соответствующей версии. Его номер должен точно совпадать с версией MATLAB, использованной при компиляции. Узнать необходимую версию можно с помощью команды ver в MATLAB или просмотрев файл readme.txt, созданный компилятором.

Скопируйте EXE-файл и все дополнительные ресурсы (файлы данных, конфигурации, модели) в отдельную директорию на тестовой машине, где MATLAB не установлен. Добавьте путь к MATLAB Runtime в переменную окружения PATH либо используйте файл install_for_redistribution, автоматически создаваемый при компиляции, для корректной настройки окружения.

Если приложение взаимодействует с внешними файлами, проверьте корректность относительных путей и прав доступа. Использование абсолютных путей в коде приведёт к сбоям при переносе. Замените их вызовом fullfile и pwd для определения текущей директории выполнения.

Проверьте работу всех функций, особенно тех, которые зависят от сторонних библиотек или системных компонентов. Использование команд isdeployed и ctfroot внутри кода поможет адаптировать поведение приложения под режим запуска вне MATLAB.

Решение распространённых ошибок при компиляции

Решение распространённых ошибок при компиляции

Компиляция MATLAB-кода в EXE часто сопровождается рядом специфических ошибок. Для эффективного их устранения важно понимать причины и методы диагностики.

  • Ошибка отсутствия функций при запуске EXE

    Часто возникает, если не включены все необходимые зависимости. Используйте опцию -a в mcc для явного добавления дополнительных файлов и библиотек.

  • Несовместимость версий MATLAB и MATLAB Compiler

    Версия компилятора должна совпадать с версией MATLAB, в которой писался код. Проверяйте это с помощью ver и обновляйте компоненты.

  • Ошибка «Undefined function or variable»

    Причина – динамическое создание функций или использование функций, отсутствующих в пути компиляции. Решение: явно укажите все функции через mcc -a или объедините скрипты.

  • Проблемы с файлами данных и ресурсами

    Не забудьте добавить все внешние файлы с помощью ключа -a. Проверяйте относительные пути внутри кода – при компиляции они меняются.

  • Ошибка нехватки памяти при компиляции

    Часто связана с слишком большим объёмом данных в workspace. Очистите переменные перед компиляцией и минимизируйте использование глобальных данных.

  • Проблемы с вызовом GUI-компонентов

    MATLAB Compiler требует явного указания всех GUI-файлов (.fig). Добавьте их через mcc -a. Убедитесь, что все колбэки и компоненты корректно подключены.

  • Ошибка при запуске EXE на целевой машине

    Проверьте наличие установленного MATLAB Runtime, соответствующего версии компилятора. Неправильная версия или отсутствие приводит к ошибкам загрузки.

Для отладки используйте опцию -v при компиляции, чтобы получить подробный лог. Это поможет выявить пропущенные файлы и другие проблемы.

Вопрос-ответ:

Как в MATLAB создать исполняемый файл EXE из своего скрипта?

Для создания исполняемого файла EXE из MATLAB-скрипта необходимо использовать MATLAB Compiler. Сначала нужно подготовить функцию или скрипт, который будет скомпилирован. Затем в MATLAB открыть приложение Compiler, выбрать тип проекта «Application Compiler», указать основной файл, а также необходимые файлы и зависимости. После настройки параметров компиляции запустить процесс, который создаст папку с EXE-файлом и необходимыми библиотеками для запуска на других компьютерах без MATLAB.

Какие ограничения есть при компиляции MATLAB-кода в EXE?

При компиляции нужно учитывать, что не все функции MATLAB поддерживаются в скомпилированном приложении. Например, интерактивные графические элементы, требующие MATLAB-окружения, могут работать некорректно. Также для работы EXE-файла на целевой машине требуется установленный MATLAB Runtime, совместимый с версией MATLAB, в которой происходила компиляция. Кроме того, размер итогового файла обычно больше, чем исходного скрипта, из-за включения библиотек.

Как сделать так, чтобы созданный EXE-файл работал на компьютерах без установленного MATLAB?

Для запуска EXE-файла на компьютере без MATLAB необходимо установить MATLAB Runtime — бесплатный набор библиотек, который обеспечивает выполнение скомпилированных приложений. MATLAB Runtime нужно скачать с сайта MathWorks, выбрав версию, совпадающую с версией MATLAB, на которой был создан EXE. После установки MATLAB Runtime EXE-файл сможет работать автономно без полной установки MATLAB.

Можно ли включить внешние файлы данных или настройки в EXE, созданный в MATLAB?

Да, включить внешние файлы возможно. При компиляции через Application Compiler можно добавить дополнительные файлы и папки в раздел «Files required for your application to run». Это позволяет, например, упаковать конфигурационные файлы, изображения, базы данных и другие необходимые ресурсы вместе с EXE. При запуске приложение будет иметь доступ к этим файлам в относительном расположении, что упрощает переносимость.

Какие основные шаги стоит выполнить, чтобы отладить приложение после создания EXE?

Отладка скомпилированного EXE отличается от работы в MATLAB. Для диагностики ошибок рекомендуется сначала проверять скрипт в MATLAB на наличие исключений и предупреждений. В процессе компиляции можно включить опцию создания журнала выполнения (логов). Если приложение падает, стоит проверить версии MATLAB Runtime и убедиться, что все необходимые файлы подключены. При необходимости логика программы должна содержать обработчики ошибок для информирования пользователя о проблемах в работе.

Как в MATLAB создать исполняемый файл EXE из своего скрипта или функции?

Чтобы получить исполняемый файл EXE из MATLAB-кода, нужно использовать MATLAB Compiler — специальный инструмент для компиляции. В первую очередь необходимо подготовить функцию или скрипт, который должен работать автономно. Затем с помощью команды `mcc` или через графический интерфейс MATLAB Compiler Project можно упаковать ваш код в EXE. При этом важно учитывать, что для запуска сгенерированного файла на другом компьютере должен быть установлен MATLAB Runtime соответствующей версии.

Ссылка на основную публикацию