- - PR -
dllに構造体を渡すとNullReferenceExceptionが発生
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-10-22 20:11
お世話になっております、初めて投稿させていただきます。
現在Cにて作成されたDLLにVB.NETにて定義した構造体を渡すと NullReferenceExceptionが発生し、 処理が中断してしまう現象が発生しております。 先日、構造体に新しいメンバを追加され、その時点より上記エラーが発生しております。 [Cの構造体] ID_INF char aID[255]; char bID[255]; char cID[255]; unsigned long ulYen; 以前は一番下のulYenが存在せず、下記の用に構造体で 正常に渡す事が可能でした [VB.NET](前回までの定義) <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _ Public Structure g_Type_ID_INF <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=255)> _ Public aID As String <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=255)> _ Public bID As String <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=255)> _ Public cID As String End Structure 新しいメンバ追加されたので、下記の用に修正すると NullReferenceExceptionが発生し、処理が中断してしまいます。 [VB.NET](今回の定義) <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Ansi)> _ Public Structure g_Type_ID_INF <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=255)> _ Public aID As String <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=255)> _ Public bID As String <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=255)> _ Public cID As String <MarshalAs(UnmanagedType.U4)> _ Public ulYen As UInt32 End Structure 値は下記の用に設定しByref渡しをしております。 Dim ID_INF As g_Type_ID_INF ID_INF.aID = "1" ID_INF.bID = "2" ID_INF.cID = "3" ID_INF.ulYen = Convert.ToUInt32(100) 又、VBでのDLL宣言をIntPtr型にして、 Marshal.AllocHGlobal Marshal.StructureToPtr Marshal.FreeHGlobal で操作しても同様の結果です。 どなたか御回答いただけますでしょうか? 宜しくお願いいたします。 |
1