Calling Matlab from C++: How to pass in no arguments in varargin?
Show older comments
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!
Accepted Answer
More Answers (1)
Kaustubha Govind
on 31 May 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);
Categories
Find more on Deploy to C++ Applications Using mwArray API (C++03) in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!