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

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

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

Отображение Microsoft Visual Basic

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.