Создание 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] параметры.
Когда существующий, дополнительный vararginvarargout параметры всегда перечисляются как последние входные параметры и последние выходные параметры. Все параметры кроме nargout передаются как COM VARIANT типы. Преобразование данных перечисляет правила для преобразования между массивами MATLAB и VARIANT COMs.
Microsoft Visual Basic оказывает нативную поддержку для Variant COMs с Variant введите, а также неявные преобразования для всех типов примитивов Visual Basic к и от Variants. В общем случае массивы/скаляры любого типа примитива 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 манипуляция.