How to use coder.ceval to call a void type C++ function
10 views (last 30 days)
I am trying to call an external C++ function, which is a void type function. Here is the code I wrote as an example
function [Y] = example(a,b)
coder.ceval('cpp_fun', a, b, Y);
The C++ function is defined as:
void cpp_fun(int a, float *b, float *Y);
Here int a, float *b are input of the function and *Y is suppose to be the output of the C++ function.
But when I use the Matlab Coder to convert the matlab function above, I get the following error message: "Variable 'Y' is not fully defined on some execution paths."
Shoud I use something like
Y = coder.opaque(type)
in the matlab function to define Y? If yes, what type should I use for Y?
Any help is greatly appreciated!
Darshan Ramakant Bhat on 2 Apr 2021
Try defining the variable 'y' in MATLAB function then try to use coder.wref()
Y = 0;
coder.ceval('cpp_fun', a, b, coder.wref(Y));
Similarly you may need to use coder.ref() for the second input 'b' since it is a pointer.
Hope this will help you.