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

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

Создание 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

Определение функции 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

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 манипуляция.