我有一个 C++ DLL,我使用calllib
. 我可以轻松调用仅具有输入参数的 C++ 函数或返回mxArray
.
现在我无法调用具有多个输出参数的函数。比方说,我需要这个 Matlab 函数的 C++ 等价物,它返回一个矩阵和一个整数。
function [matrix, status] = foo()
status = 42;
matrix = ones(3,2);
end
无论我尝试什么,它都会使 Matlab 崩溃,例如:
DLL_API void foo(mxArray* iop_matrix, int* op_status)
{
mxSetM(iop_matrix, 3);
mxSetN(iop_matrix, 2);
*op_status = 42;
}
但是,当我只需要一个输出参数时,我可以很容易地让它工作
DLL_API mxArray* foo(void)
{
return mxCreateNumericMatrix(3, 2, mxDOUBLE_CLASS, mxREAL);
}
在 C++ 中这种函数的正确实现是什么?