c # — Matlab Coder — Генерация EXE из .m файла

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

  1. Используйте Matlab Builder NE
    • Плюсы: использовать, чтобы использовать!
    • Минусы: нужна лицензия ($$), которой у меня пока нет. Требуется MCR установлен на ПК конечного пользователя.
  2. Создать автономный EXE-файл из файла .m
    • Плюсы: не нужно ничего запускать.
    • Минусы: трудно для новичка в использовании. Не поддерживают все функции.

Пока что я пытаюсь сделать «подтверждение концепции» варианта 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 функции (functionA, functionB) в файле .m. Представьте также, что мне удалось создать EXE. Какой будет точка входа для exe? Это будет функция A или функция B? Как я могу определить тип данных?

1

Решение

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 — во встроенный Coder. Разница между MATLAB / Simulink 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 или вам также нужен встроенный кодер.

3

Другие решения

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

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

2

По вопросам рекламы [email protected]