Visual Basic.NET - exe en vb.net y dll en C - pasar/modificar structure con arrays

   
Vista:

exe en vb.net y dll en C - pasar/modificar structure con arrays

Publicado por Messias (2 intervenciones) el 11/11/2014 06:26:55
tengo una DLL en C que declara una estructura de este modo

1
2
3
4
5
6
7
8
9
10
typedef struct {
    uint8_t index;
    uint8_t value;
    uint8_t leds[4];
    struct {
        int8_t x;
        int8_t y;
        int8_t z;
    } input[30];
} REPORT;

vb.net no permite declarar arrays fijos dentro de una estructura asi que he tenido que declararlo asi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<StructLayout(LayoutKind.Sequential)> _
    Public Structure INPUTS
        Public x As SByte
        Public y As SByte
        Public z As SByte
    End Structure
 
    <StructLayout(LayoutKind.Sequential)> _
    Public Structure REPORT
        Public index As Byte
        Public value As Byte
        Public leds() As Byte
        Public input() As INPUTS
 
        Sub New(numleds As Integer, numinputs As Integer)
            ReDim Me.leds(numleds)
            ReDim Me.input(numinputs)
        End Sub
    End Structure

La DLL en C está llamando a una funcion Read() en mi programa en vb.net por medio de callbacks o un delegate en vb.net y le está pasando un puntero de tipo REPORT* a vb.net.

en vb.net declaré el delegate y la función de este modo

1
Public Delegate Function Del_Read(ByRef localReport As REPORT) As Byte
1
Public Function Read(ByRef localReport As REPORT) As Byte

el problema está en que sólo puedo leer:
1
report.index
1
report.value

incluso si en memoria la estructura contiene la informacion necesaria
report.leds y report.input aparecen como nothing (cuando veo los valores por medio del debugger de visual studio) en vb.net porque no fueron inicializados , porque en vb.net tienes que inicializar los arrays en las structures de este modo, mucho después de declarar las estructuras.

1
dim reporte as new REPORT(3, 29)


alguien un modo para poder pasar y modificar estructuras con arrays y no tener estos problemas?
gracias.
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

exe en vb.net y dll en C - pasar/modificar structure con arrays

Publicado por Messias (2 intervenciones) el 14/11/2014 03:31:39
ya lo resolví. gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar