如果我当前的目标可行,那么我会有些犹豫,如果可行,该如何做。我希望通过Mex文件与某些C++类进行交互,但是我需要访问的对象的实例在不同Mex函数的调用之间保持持久性。例如,假设我在初始化Mex文件中执行以下操作:
void mexFunction (int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
size_t nCats = (size_t) *mxGetPr(prhs[0]);
std::vector<Cat> cats;
for(size_t i = 0; i <nCats; i++){
cats[i] = Cat(/* arguments to constructor*/);
}
}
因此,我已经从外部C++代码初始化了Cat对象。现在,稍后,我需要更新有关Cat对象的信息,因此在另一个Mex文件中,
void mexFunction (int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
for(size_t i = 0; i < nCats; i++){
cats[i].feed(/*parameters to feed method*/);
}
}
这是我的问题:
最佳答案
不确定在Mex函数之间是否可能,但是您可以使某些事情在同一mex例程的调用之间保持不变。
请参阅说明文件:
另请参见Mathworks网站上的以下答案:
How can I make memory persistent between calls to a MEX-file in MATLAB
我自己没有做过此事,因此无法提供更多具体的帮助,但这可能会为您指明正确的方向。
关于c++ - 通过Mex文件与C++对象进行交互,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46939226/