Создайте C++ MATLAB Data API разделяемый заголовок библиотеки от функции MATLAB со строгим контролем типов

В этом примере показано, как создать MATLAB C++® API данных совместно использовал заголовок библиотеки от функции MATLAB со строгим контролем типов, и интегрируйте его с демонстрационным кодом приложения C++. Целевая система не требует, чтобы лицензированная копия MATLAB запустила приложение.

Необходимые условия

  • Запустите этот пример путем создания новой папки работы, которая отображается к пути поиска файлов MATLAB.

  • Проверьте, что вам установили компилятор C++ путем ввода mbuild -setup в командной строке MATLAB.

  • У конечных пользователей должна быть установка MATLAB Runtime, чтобы запустить приложение. Для получения дополнительной информации смотрите Установку и Сконфигурируйте MATLAB Runtime.

    Для тестирования можно использовать установку MATLAB вместо MATLAB Runtime.

Создание функции в MATLAB

Создайте файл MATLAB под названием stronglyTypedFactorial.m со следующим кодом:

function fact = stronglyTypedFactorial(n)
arguments
    n (1,1) uint64 {mustBeReal, mustBeLessThan(n,22)}
end
fact = 1;
for i = 1:n
    fact = fact*i;
end
end

Протестируйте функцию в командной строке MATLAB.

stronglyTypedFactorial(5)
ans =
  uint64
   120

Сгенерируйте C++ разделяемый заголовок библиотеки Используя mcc Команда

Сгенерируйте совместно использованный заголовок библиотеки C++ с помощью mcc команда. В командной строке введите:

if ~exist('output/cpp','dir')
    mkdir output/cpp
end
mcc -W 'cpplib:stronglyTypedFactorial,generic' stronglyTypedFactorial.m -d output/cpp
Следующие файлы создаются в v2 > generic_interface папка:

  • readme.txt

  • stronglyTypedFactorial.ctf

  • stronglyTypedFactorialv2.hpp

stronglyTypedFactorialv2.hpp заголовочный файл содержит массив данных C++, который принимает аргумент типа uint64_t.

matlab::data::Array stronglyTypedFactorial(std::shared_ptr<MATLABControllerType> _matlabPtr, uint64_t n)

Этот uint64_t отображение совпадает с uint64 со строгим контролем типов тип данных аргумента MATLAB.

n (1,1) uint64 {mustBeReal, mustBeLessThan(n,22)}

Для получения дополнительной информации смотрите Отображения Типа данных Между C++ и кодом MATLAB Со строгим контролем типов.

 stronglyTypedFactorialv2.hpp

Интегрируйте C++ MATLAB Data API разделяемый заголовок библиотеки с приложением C++

Создайте файл кода приложения C++ под названием factApp.cpp со следующим кодом.

 factApp.cpp

Примечание

При записи кода приложения C++ необходимо включать заголовочный файл (.hpp файл) сгенерированный mcc команда или приложение Library Compiler и MatlabCppSharedLib.hpp заголовочный файл с помощью #include директивы.

Скомпилируйте и соедините приложение C++ в командной строке MATLAB.

mbuild factApp.cpp -outdir output/cpp

Запустите приложение от системной командной строки путем передачи развертываемого архива (.ctf файл) как вход. Для тестирования можно запустить приложение из командной строки MATLAB.

!output\cpp\factApp.exe output\cpp\v2\generic_interface\stronglyTypedFactorial.ctf
Factorial of 5 is 120

Смотрите также

|

Похожие темы