передача параметра для вызова функции Matlab в C ++

0

используя инструмент развертывания, я создал общую библиотеку c++. Моя функция Matlab получает только один входной параметр, который является образом изображений, и возвращает вектор 1 * 6 в double;

Я много искал в сети и нашел шаги, вызывающие функции Matlab в c++; Теперь я знаю, что сначала я должен инициализировать приложение и библиотеку, такую как:

#include <libname.h>
mclInitializeApplication();
mclInitializeApplication();

и я знаю, что, наконец, я должен вызывать функции для завершения:

<libname>Terminate();
mclTerminateApplication();

но я не знаю, как передать строку в функцию matlab. Я пишу так:

string path = "C:\\Users\\user\\Documents\\MATLAB\\Mypic.jpg";
mwArray im_path;

При вызове im_path.SetData() я не знаю, какой тип я должен использовать. типы первого параметра, не содержит никакого типа, связанного с строкой. Также я не знаю, как вызвать функцию Matlab и какие параметры я должен передать этому.

пожалуйста, помогите мне, если вы сделаете этот звонок раньше.

Спасибо большое!

  • 0
    @herohuyongtao, что с метатегом ?
  • 0
    @Charles Здесь mixed-programming - это сокращение от mixed-programming на смешанном языке , в котором исходный код написан на двух или более языках, т.е. позволяет вам вызывать существующий код, который может быть написан на другом языке. Я не совсем согласен, что это метатег. Я ответил на несколько вопросов, увиденных здесь . Они на самом деле хотели это сделать, но они просто перечисляют различные языки. Но то, что они действительно хотят сделать, это смешать их вместе, а не делать это на всех этих языках. Такой тег может помочь описать такие вопросы более точно.
Показать ещё 3 комментария
Теги:
windows-7-x64
mixed-programming

1 ответ

0

Чтобы передать string в качестве входного параметра в Matlab, вы можете просто использовать:

mwArray im_path(path.c_str());

И вам также нужно сначала инициализировать функцию и завершить ее после. Предположим, что ваша функция подобна function res = func(path) и развертывается в func.lib, вам нужно:

funcInitialize()
...
mwArray res(1, 1,  mxDOUBLE_CLASS); // suppose the result is a double
func(1, res, im_path);              // call it here
...
funcTerminate();

Проверьте это сообщение для получения дополнительной информации.

  • 0
    спасибо;) но я читал этот пост раньше! как насчет выходного значения? Как я могу получить это? а почему вы не использовали setdata или get функцию?
  • 0
    @ user3159964 Смотрите обновленный. Простите за поздний ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню