return empty array in c++ mexFunction in the out-of-process mexHost
3 次查看(过去 30 天)
显示 更早的评论
I want to use the out-of-process functionnality and to return an empty array in my C++ mexFunction.
It is not exactly the same question as :
since it is in C++ and with feval.
Here the problem:
void MexFunction::operator()(mm::ArgumentList outputs, mm::ArgumentList inputs)
{
outputs[0] = f.createEmptyArray();
}
that i called with
>> mh = mexhost; res = feval(mh,'example');
Error using matlab.mex.MexHost/feval
Too many output arguments.
but directly called via the Command window I have:
>> example
ans =
[]
回答(1 个)
Samay Sagar
2024-9-26
I have also encountered this issue in the past while returning an empty array from a C++ MEX function. I have verified that this issue was fixed in MATLAB R2021a.
As a workaround, you can return a non-empty value like a string literal (say "empty_array") instead of an empty array, which can be later handled in MATLAB to replace the value with [ ].
Another workaround is to catch the error in MATLAB and handle it there to use [ ].
mh = matlab.mex.MexHost();
try
res = feval(mh, "example");
catch ME
switch ME.identifier
case 'MATLAB:maxlhs' % The error when empty array is returned
res = [];
case 'MATLAB:mex:MexHostCrashed' % A general MEX error
clear mex;
otherwise
rethrow(ME)
end
end
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 MATLAB Compiler SDK 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!