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
vb.net no permite declarar arrays fijos dentro de una estructura asi que he tenido que declararlo asi
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
el problema está en que sólo puedo leer:
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.
alguien un modo para poder pasar y modificar estructuras con arrays y no tener estos problemas?
gracias.
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


0