【发布时间】:2015-05-08 15:48:36
【问题描述】:
好吧,伙计们,我感觉自己好像掉进了兔子洞……
为了构建一个作为 Matlab-Mex 的接口来接收由复杂的 C 结构组成的多个不同消息,我想在不同的函数中创建相应的 Mex-Struct。
是否有可能将包含来自用户定义函数的字段的mxArrays 传递给mexFunction()?
我创建了应该在 mexFunctions() 内部调用的函数,这些函数应该将填充的 mxArray 数据类型作为指针传递给 mexFunction(),但这不起作用。
例如
mxArray* createFoo();
或者
void createFoo(mxArray* myData);
在mexFunction() 内部,这些createFoo() 函数无法将创建的数据指针传递回函数。在它们内部,数据的创建确实有效,但是它们返回的指针由于例如myData = mxCreateDoubleMatrix().
编译器是Visual Studio 2010,Matlab是2011b。
可以直接写入函数内部的工作区,但这是非常糟糕的风格。
【问题讨论】:
-
那么,您是否希望在调用
createFoo结束时让参数指向正确的数据结构? -
我想在 createFoo() 中创建正确的 mx-data 结构并返回一个指向该数据结构的正确指针,以便它可以从 mexFunction() 传递到 Matlab。
-
您需要显示更多代码,但它可能不起作用,因为如果您想修改函数内的指针,您需要将其作为
**或引用传递(@987654333 @)。 -
您能否详细说明您如何在 createFoo 中创建数据以及如何使用它或签入 mexFunction?
-
让我看看我是否正确:您定义了
mxArray* createFoo() {return mxCreateDoubleMatrix(); },当您在mexFunction()中调用它时,返回的指针已损坏?希望您在返回指针之前不要在指针上调用mxDestroyArray()...