exponenta event banner

Соглашения о вызовах

Создание COM-класса

Для создания COM-класса требуется генерация

  • Файл определения класса на языке описания интерфейса (IDL)

  • Один или несколько связанных файлов определения/реализации класса C++

Продукт MATLAB ® Compiler SDK™ автоматически создает код IDL и C/C + +, необходимый для построения каждого COM-класса в компоненте. Этот процесс обычно прозрачен для пользователя при использовании компилятора для создания COM-компонента, а также для пользователей COM-компонента при программировании с его помощью.

Сведения о правилах кодирования IDL и C++ для построения COM-объектов и сопоставлениях с другими языками см. в статьях библиотеки MSDN.

В следующей таблице показано сопоставление общей функции 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);
Визуальный базовый код
Sub foo(nargout As Long, _
        Y1 As Variant, _
        Y2 As Variant, _
        .
        .
        varargout As Variant, _
        X1 As Variant, _
        X2 As Variant, _
        .
        .
        varargin As Variant)

Сопоставление IDL

Определение IDL-функции генерируется путем создания функции с тем же именем, что и исходная функция MATLAB, и списка аргументов, содержащего все входы и выходы исходного плюс один дополнительный параметр. nargout.

При наличии nargout параметр является [in] параметр типа long. Это всегда первый аргумент в списке. Этот параметр обеспечивает правильное прохождение MATLAB nargout для скомпилированного кода MATLAB. nargout параметр не создается, если инкапсуляция функции MATLAB не содержит выходных данных.

После nargout , выходы перечислены в порядке их появления в левой части функции MATLAB и помечены как [in,out], что означает, что они проходят в обоих направлениях.

Ниже перечислены входные данные функций, которые отображаются в том же порядке, что и в правой части исходной функции. Все входы помечены как [in] параметры.

При наличии необязательный параметр varargin/varargout параметры всегда перечисляются как последние входные параметры и последние выходные параметры. Все параметры, отличные от nargout передаются как COM VARIANT типы. В окне «Преобразование данных» перечислены правила преобразования между массивами MATLAB и COM. VARIANTs.

Сопоставление Microsoft Visual Basic

Microsoft Visual Basic обеспечивает встроенную поддержку COM Variants с Variant тип, а также неявные преобразования для всех типов примитивов Visual Basic в и из VariantС. В целом в качестве аргументов могут передаваться массивы/скаляры любого типа-примитива Visual Basic, а также массивы/скаляры типов Variant.

Компоненты COM компилятора MATLAB SDK также обеспечивают прямую поддержку Excel ®Range объект, используемый Visual Basic для приложений для представления диапазона ячеек на листе Excel.

Дополнительные сведения о типах данных Visual Basic см. в документации по Visual Basic для приложений, входящей в состав Microsoft Excel.

Дополнительные сведения о Visual Basic и Excel см. в библиотеке MSDN Range манипуляции.