Как передать аргументы (argc, argv) из кода C++ в файл MatLab Mex?

Я пытаюсь взять некоторый код C++ и поместить вокруг него соответствующие оболочки mex-функций MatLab, чтобы я мог вызывать свой C++ как функцию MatLab. Мой код C++ принимает 4 аргумента командной строки, используя argc и argv.

Вызов функции C++ из командной строки будет таким: myfunciton string1 string2 string3 string4

Я хочу, чтобы мой вызов функции MatLab из командной строки MatLab выглядел так: myfunction('string1', 'string2', 'string3', 'string4')

Я просмотрел следующее сообщение в блоге, и OP может сделать это, используя c (не С++), и между этим и документацией MatLab для С++ я немного запутался (в основном из-за различий в синтаксисе между сообщением в блоге и документы Mathwork для С++)

https://sungkwang.wordpress.com/2011/01/17/passing-argument-in-mex-function-without-modifying-c-code/

https://www.mathworks.com/help/matlab/matlab_external/c-mex-source-file.html

#include "mex.hpp"
#include "mexAdapter.hpp"

using namespace matlab::data;
using matlab::mex::ArgumentList;

class MexFunction : public matlab::mex::Function {
public:
    void operator()(ArgumentList outputs, ArgumentList inputs) {
       int argc = 0;
       argc = inputs.size();
       //I'm unsure of how to handle the argv portion(?)
       main(argc,argv);

    }


    int main(int argc, char *argv[]){
       //Rest of code... omitted for brevity of question
    }
};


person sdub0800    schedule 26.03.2019    source источник
comment
Вы можете использовать C MEX API для вызова своего кода C++, вам не нужно использовать новый C++ API. Хотя, возможно, C++ API проще в использовании, на данный момент для него существует намного меньше примеров.   -  person Cris Luengo    schedule 10.04.2019


Ответы (1)


Скопируйте это в свое командное окно:

edit([matlabroot '/extern/examples/cpp_mex/arrayProduct.cpp']);

Другие примеры можно найти здесь< /а>

person Hannah    schedule 10.04.2019