Вопрос

Я разработал функцию MATLAB и ищу способ вызвать эту функцию из другого приложения C # и передать ему некоторые параметры и получить результаты в программе C #.

Я слышал, что могу использовать динамический обмен данными (DDE) или COM-объекты, но могу ли я это сделать?

Это было полезно?

Решение

Хороший пример есть в MATLAB Central .

Здесь показаны три способа взаимодействия с MATLAB :

  1. COM
  2. MATLAB .NET Bulider
  3. Компилятор MATLAB

COM (у меня нет опыта работы с ним)

Минусы: на целевом компьютере должен быть установлен MATLAB.

MATLAB .NET builder компилирует ваш код MATLAB в сборку .NET, и вы можете использовать его напрямую.

Плюсы: MATLAB не требуется устанавливать на целевой компьютер

Минусы: дорого

Компилятор MATLAB компилирует ваш код MATLAB в библиотеку C / C ++ или EXE-файл. Вы можете использовать его через P / Invoke .

Плюсы: MATLAB не требуется устанавливать на целевой компьютер

Минусы: дорого, много P / Invoke.

Другие советы

Существует третий вариант: делегаты .Запуск MATLAB -> загрузка сборки .NET -> выполнение функции .NET с дескриптором делегата функции MATLAB.

На этом сайте есть отличный пример по настройке всего.Вы можете использовать инструмент развертывания MATLAB .NET.

Вам необходимо

  • Установите MCR (среда выполнения компилятора Matlab).
  • Разверните свою функцию Matlab в .NET Assembly с помощью Matlab Deploy. Инструмент.Будет создан файл .dll.
  • Добавьте ссылку на DLL в свой проект .NET.
  • Добавить ссылку на MATLAB.NET.

Преимущество этого метода в том, что на целевой машине не требуется установка MATLAB, но, с другой стороны, выполнение довольно дорогое.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top