Calllib with C++ out char *parameter

5 次查看(过去 30 天)
Justin Vuffray
Justin Vuffray 2021-4-7
回答: Rishav 2024-2-21
Hello,
I'm doing an example of my sdk. The c++ function on header is
int myfunction(int index, out char *parameter);
So my call in MATLAB is
strOutParameter = "00";
[intReturned, strOutParameter] = calllib('myLib', 'myfunction', index, strOutParamter);
I try it but it isn't working. I've an error :
Error using calllib
Parameter can not be converted to a character vector
I really don't code on MATLAB. I'm just doing a little example file of few lines for my users.
So my question is ; How to pass and get a out char * parameter ?
Thanks in advance

回答(1 个)

Rishav
Rishav 2024-2-21
Hi Justin,
In MATLAB, when passing and receiving char* parameters to and from C++ functions using 'calllib' function, you need to handle them as MATLAB strings (char arrays).
Here is how you can modify your MATLAB code:
% Define the input parameters
index = 1;
strOutParameter = blanks(256);
% Call the C++ function using calllib
[intReturned, strOutParameter] = calllib('myLib', 'myfunction', index, strOutParameter);
% Convert the output parameter to a string
strOutParameter = strtrim(strOutParameter);
where,
  • blanks(256) return 1-by-n array of space characters.
  • strtrim is used to remove any trailing whitespace characters from the output parameter.
Please refer to the below documentations for more details on:
  1. blanks: https://www.mathworks.com/help/matlab/ref/blanks.html
  2. strtrim: https://www.mathworks.com/help/matlab/ref/strtrim.html

类别

Help CenterFile Exchange 中查找有关 C Shared Library Integration 的更多信息

产品


版本

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by