Calling Matlab from C++: How to pass in no arguments in varargin?
Afficher commentaires plus anciens
I am compiling Matlab .m functions using Matlab compiler into libraries callable from C++. The particular function I am working with looks like this:
function status = cainit( model, varargin )
if nargin==1
% do something
elseif nargin==2
% do something else
end
end
The C++ header file produced by Matlab compiler ("mcc") looks contains:
extern LIB_libca_CPP_API void MW_CALL_CONV cainit( int nargout, mwArray& status, const mwArray& model, const mwArray& varargin );
I want to call cainit from my C++ code such that the nargin==1 part of the Matlab function gets executed. But I can't figure out how to pass in "no arguments".
For example, if I try the most obvious:
mwArray status;
cainit( 1, status, mwArray(""), mwArray() );
It still results in nargin==2 because mwArray() is an empty ([]) array.
Is there a way not to pass in an argument from C++? In other words, how do I do the C++ equivalent of Matlab "cainit('mymodel')"?
Thanks in advance!
Réponse acceptée
Plus de réponses (1)
Kaustubha Govind
le 31 Mai 2013
I don't have a whole lot of experience with MATLAB Compiler, but does it work if you create varargin as an empty cell array and pass that in:
mwArray varargin(0, 0, mxCELL_CLASS);
Catégories
En savoir plus sur Deploy to C++ Applications Using mwArray API (C++03) dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!