How to pass an argument by reference to a C++ Interface library function?
11 次查看(过去 30 天)
显示 更早的评论
MathWorks Support Team
2023-3-3
回答: MathWorks Support Team
2023-3-3
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?
采纳的回答
MathWorks Support Team
2023-3-3
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
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Call C++ from MATLAB 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!