将Matlab Handle类转换为C++

3
我在Matlab中有一个句柄类,我希望能够在C++中使用。我已经从这里了解到,不能直接生成C++类,而必须用函数包装我的类。其他问题中的示例仅显示在包装函数中使用一个成员函数的用法。然而,我需要能够调用我的类的几个成员函数。
由于根据Matlab文档,我无法将我的类实例传递给包装函数我不知道如何让多个函数操作同一个对象。
这不可能吗?
感谢任何帮助。

你链接的答案相当古老,是在2013年3月写的。自那时以来,MATLAB Coder已经发生了很大变化。 - Sam Roberts
没错。但根据Matlab文档,同样的限制似乎仍然存在。 - Nicolas
2个回答

1
您无法将类作为输入和输出用于生成代码的主函数。但是,您可以从主函数调用任意数量的子函数,这些子函数可以将对象作为输入。该对象通常从主函数创建并传递给子函数。然后,使用codegen "main function name"生成代码。生成的代码包含所有子函数。
您还应在子函数中使用coder.inline('never'),以便它们显示为生成代码中的单独函数。

0
我看不出有几个函数可以操作同一个对象的方法。
为什么不能呢?你可以只使用指针作为输入参数。
int main() {
  int myarr[5] = {1, 2, 3, 4, 5};
  double myval1, myval2;
  myval = myfun1(myarr, 100);  // myarr is unchanged
  myfun2(&myarr, 200);         // myarr now has new values
  return 0;
}

double myfun1(int *arr, int para1) {
// @TODO1
}

void myfun2(int *arr, int para2) {
// @TODO2: here you can change value of *arr which is returned back to the calling function
}

myarr 可以更改为您想要的任何类。


我正在尝试使用Matlab Coder将用Matlab编写的类翻译成C++。然而,该工具无法直接翻译Matlab类,但可以翻译操作Matlab类的函数。因此,为了将Matlab类导出到C++,建议的方法是编写使用Matlab类的Matlab函数,然后在该函数上使用Matlab Coder,这将给我一个C/C++函数。根据Matlab文档,Coder无法处理以Matlab类作为输入/输出参数的函数。似乎Matlab类必须完全存在于Matlab函数内部。 - Nicolas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接