используя инструмент развертывания, я создал общую библиотеку 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 и какие параметры я должен передать этому.
пожалуйста, помогите мне, если вы сделаете этот звонок раньше.
Спасибо большое!
Чтобы передать 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();
Проверьте это сообщение для получения дополнительной информации.
mixed-programming
- это сокращение отmixed-programming
на смешанном языке , в котором исходный код написан на двух или более языках, т.е. позволяет вам вызывать существующий код, который может быть написан на другом языке. Я не совсем согласен, что это метатег. Я ответил на несколько вопросов, увиденных здесь . Они на самом деле хотели это сделать, но они просто перечисляют различные языки. Но то, что они действительно хотят сделать, это смешать их вместе, а не делать это на всех этих языках. Такой тег может помочь описать такие вопросы более точно.