<StructLayout(LayoutKind.Sequential)> _ Structure ST2 Dim a As Integer Dim b As Short End Structure
<StructLayout(LayoutKind.Sequential)> _ Public Structure ST1 Dim a As Short Dim b As Short <VBFixedArray(499), MarshalAs(UnmanagedType.ByValArray, SizeConst:=499)> _ Dim nData() As ST2 Public Sub Initialize() ReDim nData(499) End Sub End Structure
Declare Function cnc_rdmacror Lib "***.dll" (ByVal Hndl As Short, ByRef Odb As ST2) As Short
分類:[.NET]
VB6からあるDLLを呼び出していてVB.NETに移行していて、
以下のような構造体の配列のマーシャリングがうまくいきません。
構造体の中の配列の場合はうまくいくのですが、
構造体の中の構造体配列の場合うまくいきません。
<StructLayout(LayoutKind.Sequential)> _
Structure ST2
Dim a As Integer
Dim b As Short
End Structure
<StructLayout(LayoutKind.Sequential)> _
Public Structure ST1
Dim a As Short
Dim b As Short
<VBFixedArray(499), MarshalAs(UnmanagedType.ByValArray, SizeConst:=499)> _
Dim nData() As ST2
Public Sub Initialize()
ReDim nData(499)
End Sub
End Structure
Declare Function cnc_rdmacror Lib "***.dll" (ByVal Hndl As Short, ByRef Odb As ST2) As Short
<エラーメッセージ>
:429 型 ST1 のフィールド nData をマーシャリングできません
: この型は構造体フィールドとして、マーシャリングできません。"
Dim nData() As ST2 がDim nData() As Integerというケースではうまくいくのですが...
MSDNで構造体の中の配列のマーシャリングは解決できたのですが
解決方法教えてもらえませんか?