return empty array in c++ mexFunction in the out-of-process mexHost
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentar
Antworten (1)
Samay Sagar
am 26 Sep. 2024
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 Kommentare
Siehe auch
Kategorien
Mehr zu MATLAB Compiler SDK finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!