Help with matlab C eval function

Hello,
I am trying to pass a pointer structure and normal variables using C eval. Matlab throws error, cannot parse variables to uint8 from double. I am not sure where this type casting is happening. Any help is appreciated.
uint8_t checkcurrentk(float ILout, ila* obj) // C function
Vout=(coder.ceval('checkcurrent',IA,coder.ref(ila)));
typdef struct s_AIndCurr
{
float ILa1
float ILa2
float ILS3
float ILScal
} Ilas
extern Ilas ila;

回答(1 个)

Satwik
Satwik 2024-2-16
Ensure that the function name you use in “coder.ceval” matches the actual function name. In the code you provided, the C function is named “checkcurrentk” and the function call in the “coder.ceval” is “checkcurrent”. This should match unless you have a specific reason for the discrepancy.
Additionally, the error message indicates that you might be passing a “double” to a function that expects a “uint8”. You should check all instances of calling “coder.ceval” and ensure that the types of all arguments match the expected types in the C function declarations.
Addressing these points should resolve the issue. If the issue persists, please provide the complete code to help diagnose the issue further.

类别

在 帮助中心 和 File Exchange 中查找有关 Variables 的更多信息

标签

提问:

2021-2-10

回答:

2024-2-16

Community Treasure Hunt

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

Start Hunting!

Translated by