Как скомпилировать код MATLAB для использования с QT C ++ - PullRequest
0 голосов
/ 11 января 2012

У меня есть 2 набора кодов:

  • код MATLAB и
  • Код QT C ++.

Я попытался скомпилировать код MATLAB в библиотеку C ++ с помощью команды mcc с компилятором msvc2008. Для моего кода QT C ++ я использую mingw для компиляции. Однако, когда я пытаюсь добавить преобразованный в C ++ код MATLAB, возникает много проблем.

Можно ли смешивать эти два типа кода вместе? У кого-нибудь есть опыт использования комбинации этих языков?

! Я пытался использовать Octave, но я бы не стал перекодировать мой код MATLAB. Я пытаюсь найти альтернативу для непосредственного запуска кода MATLAB.

NB. Мне нужно использовать mingw в QT, как это требуется, и для команды matlab mcc у меня есть только выбор использовать компилятор msvc. Было бы лучше, если бы я мог сделать программу автономной для переносимости. Причина, по которой мне нужно использовать код MATLAB, заключается в том, что мне нужны некоторые приятные математические функции для манипулирования матрицей, а также потому, что мне было бы легче проводить исследования с использованием MATLAB.

Ответы [ 2 ]

4 голосов
/ 11 января 2012

Когда вы компилируете код Matlab, используя mcc (по умолчанию или при использовании -m option), вы получаете исполняемый файл. Итак, из вашего файла C ++ вы можете вызвать исполняемый файл matlab с помощью команды C / C ++ exec.

Если вы используете -l option (используя mcc), вы получите общую библиотеку и заголовок. Например, если вы введете (в Matlab):

mcc -l test.m -W cpplib:test.h

Это должно создать общую библиотеку test.lib или test.so и заголовок test.h

В test.h должна быть строка, подобная этой:

bool MW_CALL_CONV mlxTest (int nlhs, mxArray * plhs [], int nrhs, mxArray * prhs []);

Вы можете вызывать функцию Matlab, используя это.

Кроме того, вы должны добавить как общие библиотеки, так и заголовки в ваш проект msvc.

1 голос
/ 12 декабря 2012

Я исправил mxInt64 и mxUint64, добавив больше typedef, чтобы код распознавал их как целые числа со знаком и без знака длиной 64 байта.

...