How to acces lib.pointer in C++ Mex Files

Hello everyone,
I want to access lib.pointer within a mexFile using Matlab's C++ API. The pointer is transported as matlab::data::ArrayType::HANDLE_OBJECT_REF, but I don't know how to access the values within this structure. I want to convert this to a void pointer later. The lib.pointer contains a handle to a device and I am using this to communicate with the device via a separate API.
Hopefully someone can help me further.
Thank you in advance.

Respuestas (1)

埃博拉酱
埃博拉酱 el 21 de En. de 2025
Editada: 埃博拉酱 el 21 de En. de 2025

0 votos

lib.pointer has a Value property. Pass that to your MEX function.

4 comentarios

Richard Z.
Richard Z. el 22 de En. de 2025
Hi and thanks for your reply.
I thought that passing this value is essentially a 64bit Number and I have to cast this later on to void Pointer? I thought there is a safer or even better way to protect the handle and therefor keep it in this lib.pointer. Passing the handle as a uint64 already works.
Hopefully you or someone can enlight me what is the best way.
Thanks in advance.
埃博拉酱
埃博拉酱 el 22 de En. de 2025
Editada: 埃博拉酱 el 22 de En. de 2025
What do you mean by "protect the handle"? What does it mean to "keep it in this lib.pointer"? Passing the Value to a MEX function doesn't mean you're taking it away from lib.pointer as long as you don't delete this object in the MATLAB workspace - it's still in lib.pointer. And lib.pointer is just a container, a segment of memory, containing that value, and it doesn't have any "protect" functionality that I understand.
Richard Z.
Richard Z. el 23 de En. de 2025
Hmm ok but matlab is giving an error if I want to access the property:
The datatype and size of the value must be defined before the value can be retrieved.
The datatype of this libpointer is 'voidPtr'. Do you have a tip for me?
Thanks in advance!

Iniciar sesión para comentar.

Categorías

Productos

Versión

R2023a

Etiquetas

Preguntada:

el 21 de En. de 2025

Comentada:

el 23 de En. de 2025

Community Treasure Hunt

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

Start Hunting!

Translated by