compiler.build.comComponent

Создайте COM-компонент для развертывания вне MATLAB

Описание

пример

Внимание

Эта функция только поддерживается на Windows® операционные системы.

compiler.build.comComponent(Files) создает COM-компонент с помощью MATLAB® функции заданы Files.

пример

compiler.build.comComponent(Files,Name,Value) создает COM-компонент с дополнительными опциями, заданными с помощью одних или нескольких аргументов name-value. Опции включают имя класса, выводят директорию и дополнительные файлы, чтобы включать.

пример

compiler.build.comComponent(ClassMap) создает COM-компонент с классом, сопоставляющим заданное использование container.Map объект ClassMap.

пример

compiler.build.comComponent(ClassMap,Name,Value) создает COM-компонент с помощью ClassMap и дополнительные опции задали использование одних или нескольких аргументов name-value. Опции включают имя компонента, выводят директорию и дополнительные файлы, чтобы включать.

пример

compiler.build.comComponent(opts) создает COM-компонент с опциями, заданными с помощью compiler.build.COMComponentOptions объект opts. Вы не можете задать никакие другие опции с помощью аргументов name-value.

пример

results = compiler.build.comComponent(___) возвращает информацию о сборке как compiler.build.Results объект с помощью любой из комбинаций аргументов в предыдущих синтаксисах. Информация о сборке состоит из типа сборки, путей к скомпилированным файлам и опций сборки.

Примеры

свернуть все

Создайте COM-компонент в системе Windows с помощью файла функции, который генерирует магический квадрат.

Убедитесь, что у вас есть установленное следующее:

  • Набор Windows 10 SDK. Для получения дополнительной информации смотрите Windows 10 SDK.

  • MinGW-w64. Чтобы установить его от MathWorks File Exchange, смотрите Поддержку MATLAB Компилятора C/C++ MinGW-w64.

    Используйте mbuild -setup -client mbuild_com гарантировать, что MATLAB может создать COM-компоненты.

В MATLAB найдите функцию MATLAB, которую вы хотите развернуть как COM-компонент. В данном примере используйте файл magicsquare.m расположенный в matlabroot\extern\examples\compiler.

appFile = fullfile(matlabroot,'extern','examples','compiler','magicsquare.m');

Создайте COM-компонент с помощью compiler.build.comComponent команда.

compiler.build.comComponent(appFile);

Функция сборки создает следующие файлы в папке под названием magicsquarecomComponent в вашей текущей рабочей директории:

  • dlldata.c — C файл исходного кода, который содержит точки входа и структуры данных, требуемые фабрикой классов для DLL.

  • GettingStarted.html — Файл HTML, который содержит шаги при установке COM-компонентов.

  • includedSupportPackages.txt — Текстовый файл, который перечисляет все файлы поддержки, включенные в компонент.

  • magicsquare.def — Файл определения модуля, который задает который функции включать в таблицу экспорта DLL.

  • magicsquare.rc — Файл скрипта ресурса, который описывает ресурсы, используемые компонентом.

  • magicsquare_1_0.dll — Файл динамически подключаемой библиотеки.

  • magicsquare_dll.cpp — Файл исходного кода C++, который содержит функции помощника.

  • magicsquare_idl.h — Заголовочный файл C++.

  • magicsquare_idl.idl — Файл языка определения интерфейсов.

  • magicsquare_idl.tlb — Файл библиотеки типов, который содержит информацию о свойствах COM-объекта и методах.

  • magicsquare_idl_i.c — C файл исходного кода, который содержит IIDs и CLSIDs для интерфейса IDL.

  • magicsquare_idl_p.c — C файл исходного кода, который содержит тупиковый код прокси для интерфейса IDL.

  • magicsquareClass_com.cpp — Файл исходного кода C++, который задает класс.

  • magicsquareClass_com.hpp — Заголовочный файл C++, который задает класс.

  • mccExcludedFiles.log — Файл журнала, который содержит список любых функций тулбокса, которые не были включены в приложение. Для получения информации о неподдерживаемых функциях смотрите Ограничения MATLAB Compiler.

  • mwcomtypes.h — Заголовочный файл C++, который содержит определения для интерфейсов.

  • mwcomtypes_i.c — C файл исходного кода, который содержит IIDs и CLSIDs.

  • mwcomtypes_p.c — C файл исходного кода, который содержит тупиковый код прокси.

  • readme.txt — Текстовый файл, который содержит информацию о развертывании.

  • requiredMCRProducts.txt — Текстовый файл, который содержит идентификаторы продукта продуктов, требуемых MATLAB Runtime запустить приложение.

  • unresolvedSymbols.txt — Текстовый файл, который содержит информацию о неразрешенных символах.

Для примера, показывающего, как интегрировать этот компонент в автономную Microsoft® Visual Basic® приложение, смотрите, Интегрируют Магический квадрат в Приложение COM.

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

Создайте COM-компонент в системе Windows и настройте его с помощью аргументов name-value.

В данном примере используйте файлы flames.m и flames.mat расположенный в matlabroot\extern\examples\compiler.

appFile = fullfile(matlabroot,'extern','examples','compiler','flames.m');
MATFile = fullfile(matlabroot,'extern','examples','compiler','flames.mat');

Создайте COM-компонент с помощью compiler.build.comComponent команда. Используйте аргументы name-value, чтобы задать имя компонента и версию, добавить MAT-файл и включить многословный выход.

compiler.build.comComponent(appFile,'ComponentName','MyFlames',...
    'ComponentVersion','2.0',...
    'AdditionalFiles',MATFile,...
    'Verbose','on');

Для примера, показывающего, как интегрировать этот компонент в автономное приложение Microsoft Visual Basic, смотрите, Интегрируют Магический квадрат в Приложение COM.

Создайте COM-компонент в системе Windows с помощью карты класса и нескольких файлов функции.

Создайте containers.Map возразите, чьи ключи являются именами классов и чьи значения являются местоположениями файлов функции.

cmap = containers.Map;
cmap('Class1') = {'exampleFcn1.m'};
cmap('Class2') = {'exampleFcn2.m','exampleFcn3.m'};

Создайте COM-компонент с помощью compiler.build.comComponent команда. Используйте аргументы name-value, чтобы задать имя компонента и версию.

compiler.build.comComponent(cmap,...
    'ComponentName','MyComponent',...
    'ComponentVersion','2.0');

Для примера, показывающего, как интегрировать этот компонент в автономное приложение Microsoft Visual Basic, смотрите, Интегрируют Магический квадрат в Приложение COM.

Создайте несколько COM-компонентов в системе Windows с помощью a compiler.build.COMComponentOptions объект.

В данном примере используйте файл magicsquare.m расположенный в matlabroot\extern\examples\compiler.

appFile = fullfile(matlabroot,'extern','examples','compiler','magicsquare.m');

Создайте COMComponentOptions объект с помощью appFile. Используйте аргументы name-value, чтобы задать общую выходную директорию, сгенерировать архивы блока отдельно и включить многословный выход.

opts = compiler.build.COMComponentOptions(appFile,...
    'OutputDir','D:\Documents\MATLAB\work\COMComponentBatch',...
    'EmbedArchive','off',...
    'Verbose','on')
opts =

  COMComponentOptions with properties:

            ClassMap: [1×1 containers.Map]
          ComponentName: 'magicsquare'
       ComponentVersion: '1.0.0.0'
           EmbedArchive: off
        AdditionalFiles: {}
    AutoDetectDataFiles: on
        SupportPackages: {'autodetect'}
                Verbose: on
              OutputDir: 'D:\Documents\MATLAB\work\COMComponentBatch'

   Class Map Information
       magicsquareClass: {'C:\Program Files\MATLAB\R2021b\extern\examples\compiler\magicsquare.m'}

Создайте COM-компонент с помощью COMComponentOptions объект.

compiler.build.comComponent(opts);

Скомпилировать использование файла функции myMagic2.m с теми же опциями используйте запись через точку, чтобы изменить ClassMap из существующего COMComponentOptions объект прежде, чем запустить сборку функционирует снова.

remove(opts.ClassMap, keys(opts.ClassMap));
opts.ClassMap('myMagic2Class') = 'myMagic2.m';
compiler.build.comComponent(opts);

Путем изменения ClassMap аргумент и рекомпиляция, можно создать несколько компонентов с помощью того же объекта опций.

Создайте COM-компонент в системе Windows и сохраните информацию о типе сборки, сгенерированных файлах, включал пакеты поддержки и опции сборки к compiler.build.Results объект.

Компиляция с помощью файла magicsquare.m расположенный в matlabroot\extern\examples\compiler.

results = compiler.build.comComponent('magicsquare.m')
results = 

  Results with properties:

              BuildType: 'comComponent'
                  Files: {2×1 cell}
IncludedSupportPackages: {}
                Options: [1×1 compiler.build.COMComponentOptions]

Files свойство содержит пути к следующим скомпилированным файлам:

  • magicsquare_1_0.dll

  • GettingStarted.html

Входные параметры

свернуть все

Файлы, реализующие функции MATLAB в виде вектора символов, строкового скаляра, массива строк или массива ячеек из символьных векторов. Пути к файлам могут быть относительно текущей рабочей директории или абсолюта. Файлы должны иметь .m расширение.

Пример: ["myfunc1.m","myfunc2.m"]

Типы данных: char | string | cell

Карта класса в виде containers.Map объект. Ключи карты являются именами классов, и каждое значение является набором файлов, сопоставленных с соответствующим классом. Файлы должны иметь .m расширение.

Пример: cmap

Опции сборки COM-компонента в виде a compiler.build.COMComponentOptions объект.

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'EmbedArchive','on'

Дополнительные файлы, чтобы включать в COM-компонент в виде вектора символов, строкового скаляра, массива строк или массива ячеек из символьных векторов. Пути к файлам могут быть относительно текущей рабочей директории или абсолюта.

Пример: 'AdditionalFiles',["myvars.mat","data.txt"]

Типы данных: char | string | cell

Отметьте, чтобы автоматически включать файлы данных в виде 'on' или 'off', или как числовой или логический 1 TRUE) или 0 ложь). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом можно использовать значение этого свойства как логическое значение. Значение хранится как логическое значение включения - выключения типа matlab.lang.OnOffSwitchState.

  • Если вы устанавливаете это свойство на 'on', затем файлы данных, которые вы предоставляете как входные параметры определенным функциям (такой как load и fopen) автоматически включены в COM-компонент.

  • Если вы устанавливаете это свойство на 'off', затем необходимо добавить файлы данных в компонент с помощью AdditionalFiles свойство.

Пример: 'AutoDetectDataFiles','off'

Типы данных: логический

Имя COM-класса в виде вектора символов или строкового скаляра. Вы не можете задать эту опцию, если вы используете ClassMap входной параметр. Имена классов должны совпадать с требованиями имени COM-класса.

Значением по умолчанию является имя первого файла, перечисленного в Files аргумент добавлен с Class.

Пример: 'ClassName','magicsquareClass'

Типы данных: char | string

Имя COM-компонента в виде вектора символов или строкового скаляра. Значение действует как идентификатор программы, который введен в Windows Registry. Имя по умолчанию сгенерированного компонента является первой записью Files аргумент. Имя должно начаться с буквы и содержать только буквенные символы и периоды.

Пример: 'ComponentName','mycomponent'

Типы данных: char | string

Версия компонента в виде вектора символов или строкового скаляра. Для получения информации об управлении версиями с помощью MATLAB Compiler SDK™ смотрите Управление версиями.

Пример: 'ComponentVersion','4.0'

Типы данных: char | string

Отметьте, чтобы встроить архив блока в виде 'on' или 'off', или как числовой или логический 1 TRUE) или 0 ложь). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом можно использовать значение этого свойства как логическое значение. Значение хранится как логическое значение включения - выключения типа matlab.lang.OnOffSwitchState.

  • Если вы устанавливаете это свойство на 'on', затем функция встраивает архив блока в COM-компонент.

  • Если вы устанавливаете это свойство на 'off', затем функция генерирует архив блока как отдельный файл.

Пример: 'EmbedArchive','off'

Типы данных: логический

Путь к выходной директории, где файлы типа "build" сохранены в виде вектора символов или строкового скаляра. Путь может быть относительно текущей рабочей директории или абсолюта.

Имя по умолчанию папки сборки является именем компонента, добавленным с comComponent.

Пример: 'OutputDir','D:\Documents\MATLAB\work\mycomponentcomComponent'

Типы данных: char | string

Пакеты поддержки, чтобы включать в виде одной из следующих опций:

  • 'autodetect' (значение по умолчанию) — Процесс анализа зависимостей обнаруживает и включает необходимые пакеты поддержки автоматически.

  • 'none' — Никакие пакеты поддержки не включены. Используя эту опцию может вызвать ошибки периода выполнения.

  • Строковый скаляр, вектор символов или массив ячеек из символьных векторов — Только заданные пакеты поддержки включены. Чтобы перечислить установленные пакеты поддержки или используемых определенным файлом, смотрите compiler.codetools.deployableSupportPackages.

.

Пример: 'SupportPackages',{'Deep Learning Toolbox Converter for TensorFlow Models','Deep Learning Toolbox Model for Places365-GoogLeNet Network'}

Типы данных: char | string | cell

Отметьте, чтобы управлять многословием сборки в виде 'on' или 'off', или как числовой или логический 1 TRUE) или 0 ложь). Значение 'on' эквивалентно true, и 'off' эквивалентно false. Таким образом можно использовать значение этого свойства как логическое значение. Значение хранится как логическое значение включения - выключения типа matlab.lang.OnOffSwitchState.

  • Если вы устанавливаете это свойство на 'on', затем окно команды MATLAB отображает информацию о прогрессе, указывающую на выход компилятора во время процесса сборки.

  • Если вы устанавливаете это свойство на 'off', затем командное окно не отображает информацию о прогрессе.

Пример: 'Verbose','on'

Типы данных: логический

Выходные аргументы

свернуть все

Создайте результаты, возвращенные как compiler.build.Results объект. Results объект содержит:

  • Создайте тип, который является 'comComponent'

  • Пути к следующим файлам:

    • ComponentName_ComponentVersion.dll

    • GettingStarted.html

  • Включенные пакеты поддержки

  • Создайте опции в виде COMComponentOptions объект

Ограничения

  • Эта функция только поддерживается на операционных системах Windows.

Введенный в R2021a