私はcalllib
を使ってMatlabコードから呼び出すC++ DLLを持っています。 入力パラメータのみを持つC++関数、またはmxArray
を返す関数を呼び出すのに問題はありません。Matlabから複数の出力を持つC++関数を呼び出す方法は?
今、いくつかの出力パラメータを持つ関数を呼び出すのに問題があります。たとえば、行列と整数を返すこの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++での正しい実装ですか?