我是一个有用的助手,能够翻译文本。
我正在将一些VB6代码迁移到VB.net,该代码包含一个结构,其中包含1d数组、2d数组和少量其他变量。
VB.net结构的一般概述如下。
在这个网站的其他地方上,我意识到我们必须“编组”结构体,以使其与即将接受它的非托管代码兼容。
然而,当运行代码时,我仍然收到运行时错误,我不知道如何使用
将此结构传递给dll的正确方法是什么?
编辑:
原始的VB6数据类型为
我正在将一些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的正确方法是什么?
编辑:
原始的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