Matlab Coder — создание EXE из файла .m

Моя главная цель — интегрировать код, написанный в Matlab(.m), с другим приложением С#. Я рассматривал 2 варианта:

  1. Use Matlab Builder NE
    • Pros: Use to use!
    • Минусы: Нужна лицензия ($$), которой у меня пока нет. Требуется установка MCR на ПК конечного пользователя.
  2. Generate a standalone EXE file from a .m file
    • Pros: Dont need anything to run.
    • Минусы: сложно для новичка. Не поддерживает все функции.

Пока что пытаюсь сделать "доказательство концепции" варианта 2), но безуспешно. Я даже не знаю, как начать свой вопрос; Я улучшу свой вопрос, как только немного узнаю наборы инструментов. Пожалуйста, сообщите мне, если вопрос не соответствует стандартам.

  1. Какова связь между Matlab Coder, Real-Time Workshop (RTW) и RTW Embedded Coder? Я уверен, что у меня есть обе лицензии RTW, но я не уверен, что у меня есть «Matlab Coder».
  2. Я пытаюсь использовать команду «emlc» для создания EXE. Это правильная команда? Я не мог заставить его работать. Я правильно сгенерировал код C/C++, но EXE не сгенерирован (я уже настроил установку MEX)
  3. Код C/C++, сгенерированный "emlc", можно импортировать в Visual Studio для компиляции и сборки EXE? Это супер-легко?
  4. «Emlc» принадлежит какому набору инструментов?
  5. Что означает директива %#codegen?
  6. Представьте, что у меня есть 2 функции (функция A, функция B) в файле .m. Представьте также, что я смог сгенерировать EXE. Что будет точкой входа для exe? Будет ли это функция A или функция B? Как определить тип данных?

person guilhermecgs    schedule 10.10.2013    source источник
comment
если вы хотите сгенерировать exe-файл из Matlab, exe-файлу понадобится среда выполнения MATLAB, вот что вы должны изучить   -  person Matt    schedule 10.10.2013
comment
@Matt, только если вы используете MATLAB Compiler, а не MATLAB Coder   -  person am304    schedule 10.10.2013


Ответы (2)


MATLAB Coder — это относительно новый продукт, который позволяет генерировать C-код из MATLAB без использования Simulink. До этого вам требовались Simulink и Real-Time Workshop (даже если вы не использовали Simulink) для генерации кода C из MATLAB с использованием emlc. Когда был выпущен MATLAB Coder, Real-Time Workshop был переименован в Simulink Coder, а Real-Time Workshop Embedded Coder — в Embedded Coder. Разница между MATLAB/Simulink Coder и Embedded Coder заключается в том, что «базовые» продукты кодировщика позволяют генерировать функционально корректный код, но этот код не оптимизирован для производительности в реальном времени и не настраивается для соответствия определенным стандартам кодирования. Embedded Coder позволяет оптимизировать и настраивать код, сгенерированный MATLAB и Simulink Coder. Если бы у вас была лицензия на RTW, вы бы получили бесплатную лицензию на MATLAB Coder, когда он был выпущен, поскольку MATLAB Coder является необходимым условием для Simulink Coder.

Я считаю, что emlc принадлежит MATLAB Coder. Код, сгенерированный MATLAB Coder, можно импортировать и скомпилировать в Visual Studio. Я не знаю, насколько это просто на самом деле, но есть функция под названием «Pack N Go», которая должна упростить этот процесс, проверьте ее. Существует также цель Visual Studio, но не уверен, находится ли она в базовом MATLAB Coder или вам также нужен Embedded Coder.

person am304    schedule 10.10.2013

Ссылаясь на 6):

Точка входа будет такой же, как и в MATLAB, следовательно, первая функция определена в m-файле. Все аргументы командной строки будут переданы этой функции в виде строк.

person sebastian    schedule 10.10.2013