Calllib with C++ out char *parameter

4 visualizaciones (últimos 30 días)
Justin Vuffray
Justin Vuffray el 7 de Abr. de 2021
Respondida: Rishav el 21 de Feb. de 2024
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

Respuestas (1)

Rishav
Rishav el 21 de Feb. de 2024
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

Categorías

Más información sobre C Shared Library Integration en Help Center y File Exchange.

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by