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

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

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

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

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

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

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

В следующей таблице показано отображение типовой функции MATLAB с кодом IDL и с Microsoft® Визуальный базовый®.

КодВыборка
Типовой код 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. The nargout параметр не генерируется, если вы инкапсулируете функцию MATLAB, не содержащую выходов.

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

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

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

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

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

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

Дополнительные сведения о типах данных Visual Basic см. в документации Visual Basic for Applications, включенной в Microsoft Excel.

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