Matlab - Problema con dll (Int32PtrPtr)

   
Vista:

Problema con dll (Int32PtrPtr)

Publicado por Veronica (1 intervención) el 25/02/2015 11:19:15
Hola,

Estoy trabajando con una dll en Matlab (R2009b, 32 bits) pero estoy teniendo problemas con la llamada a las siguientes funciones:

1) [SmartErrorCode, voidPtr] Smart32_Create(voidPtr)
2) [SmartErrorCode, voidPtr] Smart32_Destroy(voidPtr)

El parámetro de entrada es voidPtr en Matlab pero mirando en el header de esa dll tengo estas líneas:

#define SMART32_HANDLE INT_PTR
...

SMART32_API SmartErrorCode CALLING_CONVENTION Smart32_Create(SMART32_HANDLE* handle);
SMART32_API SmartErrorCode CALLING_CONVENTION Smart32_Destroy(SMART32_HANDLE handle);

por lo que el parámetro de entrada de Smart32_Create sería int32PtrPtr mientras que para Smart32_Destroy sería int32Ptr.

Por ejemplo en C se tendría:

SMART32_HANDLE handle = 0;
errCode = Smart32_Create(&handle);
Smart32_Destroy(handle);

En Matlab he intentado hacer esto:

pHandle = libpointer('int32PtrPtr');
SmartErrorCode = calllib('Smart32', 'Smart32_Create', pHandle);
handle = pHandle.Value
SmartErrorCode = calllib('Smart32', 'Smart32_Destroy', handle);

pero me da error en la segunda línea (se cierra Matlab).

He estado viendo que en Matlab no hay realmente punteros.

¿Sabéis cómo solucionar este problema?

Muchas gracias de antemano.

Saludos,

Verónica
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder