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