Producing a COM class requires the generation of
A class definition file in Interface Description Language (IDL)
One or more associated C++ class definition/implementation files
The MATLAB® Compiler SDK™ product automatically produces the necessary IDL and C/C++ code to build each COM class in the component. This process is generally transparent to you when you use the compiler to generate a COM component, and to users of the COM component when they program with it.
For information about IDL and C++ coding rules for building COM objects and for mappings to other languages, see articles in the MSDN Library.
The following table shows the mapping of a generic MATLAB function to IDL code and to Microsoft® Visual Basic®.
|Generic MATLAB Code|
function [Y1, Y2, ..., varargout] = foo(X1, X2, ..., varargin)
HRESULT foo([in] long nargout, [in,out] VARIANT* Y1, [in,out] VARIANT* Y2, . . [in,out] VARIANT* varargout, [in] VARIANT X1, [in] VARIANT X2, . . [in] VARIANT varargin);
|Visual Basic Code|
Sub foo(nargout As Long, _ Y1 As Variant, _ Y2 As Variant, _ . . varargout As Variant, _ X1 As Variant, _ X2 As Variant, _ . . varargin As Variant)
The IDL function definition is generated by producing a function
with the same name as the original MATLAB function and an argument
list containing all inputs and outputs of the original plus one additional
When present, the
nargout parameter is an
long. It is always the first argument in
the list. This parameter allows correct passage of the MATLAB
to the compiled MATLAB code. The
is not produced if you encapsulate a MATLAB function containing
nargout parameter, the outputs
are listed in the order they appear on the left side of the MATLAB function,
and are tagged as
[in,out], meaning that they are
passed in both directions.
The function inputs are listed next, appearing in the same order
as they do on the right side of the original function. All inputs
are tagged as
When present, the optional
are always listed as the last input parameters and the last output
parameters. All parameters other than
passed as COM
VARIANT types. Data Conversion lists the rules for conversion between MATLAB arrays
Visual Basic provides native support for COM
Variant type, as well as implicit conversions
for all Visual Basic primitive types to and from
In general, arrays/scalars of any Visual Basic primitive type,
as well as arrays/scalars of Variant types, can be passed as arguments.
Compiler SDK COM components also provide direct support
for the Excel®
Range object, used by Visual Basic for
Applications to represent a range of cells in an Excel worksheet.
See the Visual Basic for Applications documentation included with Microsoft Excel for more information on Visual Basic data types.
See the MSDN Library for more
information about Visual Basic and about Excel