#c #matlab #mex #argv #argc
#c #matlab #mex #argv #argc
Вопрос:
Я пытаюсь взять некоторый код C и поместить вокруг него соответствующие оболочки функций MatLab mex, чтобы я мог вызывать свой C как функцию MatLab. Мой код C принимает 4 аргумента командной строки, используя argc и argv.
Вызов функции C из командной строки будет следующим: myfunciton string1 string2 string3 string4
Я хочу, чтобы вызов моей функции MatLab из командной строки MatLab выглядел следующим образом: myfunction(‘string1’, ‘string2’, ‘string3’, ‘string4’)
Я просмотрел следующее сообщение в блоге, и OP может сделать это, используя c (не c ), и между этим и документацией MatLab для C я был немного сбит с толку (в основном из-за различий в синтаксисе между сообщением в блоге и документами Mathwork для c )
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
}
};
Комментарии:
1. Вы можете использовать C MEX API для вызова вашего кода на C , вам не нужно использовать новый C API. Хотя, возможно, C API проще в использовании, примеров для него пока намного меньше.
Ответ №1:
Скопируйте это в ваше командное окно:
edit([matlabroot '/extern/examples/cpp_mex/arrayProduct.cpp']);
Вы можете найти несколько других примеров здесь