Вызов MATLAB из C

Я пишу приложение Java, которое должно иметь возможность запускать команды MATLAB. Для этого я использую программу на C, которую приложение Java может использовать для взаимодействия с MATLAB. Однако, даже изучив движок MATLAB, я не могу понять, как компилировать программу на C. Похоже, что эта документация компилирует программу C из MATLAB: http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_external/f39903.html. Есть ли способ скомпилировать из командной строки? То есть, могу ли я использовать gcc с некоторыми флагами, чтобы включить всю соответствующую поддержку MATLAB (обычно я не программирую на C, поэтому извините, если мой язык не совсем правильный!)

Спасибо!


person Stephen Poletto    schedule 18.01.2010    source источник


Ответы (3)


Возможно, вы хотите сделать следующее:

1) Скомпилируйте свой код Matlab (т.е. m файлы) с помощью компилятора Matlab mcc из командной строки Matlab. Компилятор mcc генерирует c dll. Сгенерированная Matlab c dll содержит интерфейс c для m-файлов Matlab. См. следующую ссылку о том, как создать c dll из файлов Matlab M. Цель общей библиотеки C

2) Напишите c dll, которая использует сгенерированную dll Matlab на шаге 1. Скомпилируйте c dll с компилятором c. См. следующую ссылку о том, как вызвать функции, которые находятся внутри сгенерированной dll Matlab Функции интерфейса, сгенерированные компилятором MATLAB

3) Используйте сгенерированную c dll на шаге 2 с java.

person user152508    schedule 18.01.2010
comment
если вы хотите использовать автономный c exe вместо c dll, см. следующую ссылку mathworks.com/access/helpdesk/help/toolbox/compiler/ - person user152508; 18.01.2010
comment
Спасибо за ссылки! Я попробую этот метод и посмотрю, не столкнусь ли я с какими-либо проблемами. Спасибо! - person Stephen Poletto; 18.01.2010

Вы можете скомпилировать свой код обычным образом, как и обычную программу на C, но вам нужно правильно указать зависимости.

Лучше всего использовать утилиту CMake с файлом CMakelists.txt. Теперь демонстрация того, как написать CMakeLists.txt, приведена здесь и как связать C/C++ с Matlab, дается здесь. Я надеюсь, что это помогает....

person Community    schedule 19.01.2013

Я не использую MATLAB, но я предполагаю, что вам нужно сделать что-то вроде этого:

  1. Скомпилируйте свою программу на C с библиотеками MATLAB, чтобы создать общую библиотеку, которую может использовать Java.
  2. Напишите интерфейс JNI, который вызывает вашу общую библиотеку, не забудьте связать ваш новый SO и все те из MATLAB, которые вам нужны.

Разбейте проблему на шаги, и вы разберетесь с ней.

person duffymo    schedule 18.01.2010
comment
Я думаю, что мне бы хотелось иметь исполняемую программу на C. Затем мое Java-приложение может вызывать эту программу на C и передавать аргументы через командную строку. Поэтому мне нужна помощь с шагом (1), фактической компиляцией C в исполняемый файл. - person Stephen Poletto; 18.01.2010