How to pass an argument by reference to a C++ Interface library function?

11 views (last 30 days)
I have the following C++ header file.
// sample header.hpp
#include <vector>
// fills in the input vector
void getData(std::vector<char>& arr) {
char data [] = {'M', 'A', 'T', 'L', 'A', 'B', '\0'};
arr.clear();
for (auto c : data) {
arr.push_back(c);
}
}
The argument for the getData function needs to be passed by reference. How can I do that with the C++ Interface?

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 3 Mar 2023
This example shows how you can pass arguments by reference with the C++ Interface.
Generate the "header-only" library definition and specify the library name as lib.
>> clibgen.generateLibraryDefinition("header.hpp","PackageName=lib" )
Build the interface and add the interface folder to the MATLAB path, where
is the full path to the lib folder.
>> build(definelib)
>> addpath('<path-to-library>\lib')
Now, you can use the library and pass by reference in the following way.
>> arr = clib.array.lib.Char(1); % array of size 1
>> clib.lib.getData(carr); % fill in carr by calling the function
>> char(carr.int8) % convert data into MATLAB

More Answers (0)

Tags

No tags entered yet.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!