Я перенесу некоторый код VB6 на VB.net,
код содержит структуру, которая содержит 1d-массивы, 2d-массивы и несколько других переменных.
Общая схема структуры Vb.net такая же, как в
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
Звонок в dll объявлен как под
Public Declare Sub getState Lib "val.dll" (ByRef state As Test)
В другом месте на этом сайте я понял, что мы должны "упорядочить" структуру, чтобы она была совместима с неуправляемым кодом, который собирается его принять.
Несмотря на то, что я по-прежнему получаю ошибки во время выполнения кода, я понятия не имею, как использовать класс System.Runtime.InteropServices.Marshal
.
Как правильно передать эту структуру в dll?
EDIT:
Исходный тип данных VB6 -
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