Main Content

Create C++ Header File from Strongly Typed MATLAB Function

This example shows how to create a C++ header file from a strongly typed MATLAB® function and integrate it with sample C++ application code.

Create Function in MATLAB

Create a strongly typed MATLAB function in a file named stronglyTypedFactorial.m with this code:

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

Test the function at the MATLAB command prompt.

stronglyTypedFactorial(5)
ans =
  uint64
   120

Generate C++ Header File

Generate the C++ header file.

matlab.engine.typedinterface.generateCPP("myFactorial.hpp",Functions="stronglyTypedFactorial")
0 class(es) and 1 function(s) written to myFactorial.hpp

The function creates the myFactorial.hpp header file that defines a C++ data array accepting an argument n of type uint64_t.

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

This uint64_t mapping matches the strongly typed uint64 data type of the MATLAB argument n.

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

The interface verifies that the input meets the mustBeReal argument. At run-time, the MATLAB stronglyTypedFactorial function verifies that the input meets the mustBeLessThan(n,22) argument. For more information, see Data Type Mappings Between C++ and Strongly Typed MATLAB Code.

 myFactorial.hpp

Integrate C++ MATLAB Data API Header with C++ Application

Create a C++ application code file named factApp.cpp with this code. When writing your C++ application, you must include:

  • MatlabEngine.hpp before any generated header files

  • myFactorial.hpp generated by the matlab.engine.typedinterface.generateCPP function

 factApp.cpp

Verify that you have selected a supported C++ compiler.

mex -setup -client engine C++

Compile and link the C++ application at the MATLAB command prompt. For more information, see Requirements to Build C++ Engine Programs.

mex -client engine factApp.cpp

Determine the run-time library path. For an example built on Windows®, type:

rtpath = fullfile(matlabroot,"extern","bin","win64")

Set the run-time library path from the system prompt, substituting the value for rtpath. For example:

set PATH=C:\Program Files\MATLAB\R2022a\extern\bin\win64;%PATH%

Run the application.

factApp.exe
Factorial of 5 is 120

See Also

| |

Related Topics