Для создания класса требуется генерация
Файл определения класса на языке описания интерфейса (IDL)
Один или несколько связанных файлов определения/реализации класса C++
MATLAB® Compiler SDK™ продукт автоматически производит необходимый код IDL и C/C + +, чтобы создать каждый класс в компоненте. Этот процесс обычно прозрачен для вас, когда вы используете компилятор для генерации COM- компонента, и для пользователей COM- компонента, когда они программируют с ним.
Для получения информации о правилах кодирования IDL и C++ для создания COM-объектов и для отображений на другие языки см. статьи в библиотеке MSDN.
В следующей таблице показано отображение типовой функции MATLAB с кодом IDL и с Microsoft® Визуальный базовый®.
Код | Выборка |
---|---|
Типовой код MATLAB | function [Y1, Y2, ..., varargout] = foo(X1, X2, ..., varargin) |
Код IDL | 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); |
Визуальный базовый код | Sub foo(nargout As Long, _ Y1 As Variant, _ Y2 As Variant, _ . . varargout As Variant, _ X1 As Variant, _ X2 As Variant, _ . . varargin As Variant) |
Определение функции IDL генерируется путем создания функции с таким же именем, как и исходная функция MATLAB, и списка аргументов, содержащего все входы и выходы исходного плюс один дополнительный параметр, nargout
.
Когда присутствует, nargout
параметр является [in]
параметр типа long
. Это всегда первый аргумент в списке. Этот параметр позволяет правильно пройти MATLAB nargout
параметр к скомпилированному коду MATLAB. The nargout
параметр не генерируется, если вы инкапсулируете функцию MATLAB, не содержащую выходов.
Следуя nargout
параметр, выходы перечислены в порядке, в котором они появляются на левой стороне функции MATLAB, и помечены как [in,out]
, что означает, что они передаются в обоих направлениях.
Входные параметры функции перечислены далее и отображаются в том же порядке, в котором они находятся в правой части исходной функции. Все входы помечены как [in]
параметры.
При наличии необязательного varargin
/ varargout
параметры всегда перечисляются в качестве последних входных параметров и последних выходных параметров. Все параметры кроме nargout
передаются как COM- VARIANT
типы. Данные Conversion приводят правила преобразования между массивами MATLAB и COM- VARIANT
с.
Microsoft Visual Basic обеспечивает встроенную поддержку COM- Variant
s с Variant
type, а также неявные преобразования для всех типов примитивов Visual Basic в и из Variant
s. В целом в качестве аргументов могут быть переданы массивы/скаляры любого типа примитива Visual Basic, а также массивы/скаляры типов Variant.
MATLAB Compiler SDK COM-компоненты также обеспечивают прямую поддержку Excel® Range
объект, используемый в Visual Basic для приложений для представления области значений камер в листе Excel.
Дополнительные сведения о типах данных Visual Basic см. в документации Visual Basic for Applications, включенной в Microsoft Excel.
Дополнительные сведения о Visual Basic и о Excel см. в библиотеке MSDN Range
манипуляция.