Je suis en train de migrer du code VB6 vers VB.net, le code contient une structure qui contient des tableaux 1d, des tableaux 2d, et quelques autres variables.
Le schéma général de la structure de Vb.net est le suivant
Public Structure Test
Dim a As Single
Dim b As Single
Dim c As Single
<VBFixedArray(2)> Dim arr1() As Single
<VBFixedArray(2, 2)> Dim mdarr1(,) As Single
<VBFixedArray(4)> Dim arr2() As Byte
<VBFixedArray(4)> Dim arr3() As Short
<VBFixedArray(3, 2)> Dim mdarr2(,) As Integer
Dim d As Integer
Dim e As Decimal
End Structure
L'appel à la dll est déclaré comme suit
Public Declare Sub getState Lib "val.dll" (ByRef state As Test)
Ailleurs sur ce site, j'ai réalisé que nous devons "marshal" la structure pour lui permettre d'être compatible avec le code non géré qui est sur le point de l'accepter.
Cependant, je reçois toujours des erreurs d'exécution lors de l'exécution du code, je n'ai aucune idée de la façon d'utiliser la fonction d'exécution de l'utilisateur. System.Runtime.InteropServices.Marshal
classe.
Quelle serait la manière correcte de transmettre cette structure à la dll ?
EDIT :
Le type de données original de VB6 est
Public Type Test
a As Single
b As Single
c As Single
arr1(0 To 2) As Single
mdarr1(0 To 2, 0 To 2) As Single
arr2(0 To 4) As Byte
arr3(0 To 4) As Integer
mdarr2(0 To 3, 0 To 2) As Long
d As Long
e As Currency
End Type