Создание 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
COMs.
Microsoft Visual Basic оказывает нативную поддержку для Variant
COMs с
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
манипуляция.