VS6.0からのマイグレーションにて、VS2008に変換しています。 vb.netで定義した構造体を配列化したデータを、VC++で作成したDLLに引渡しをしていますが、値が正しくわたってくれません。 ご教授願えませんでしょうか? vb.net ------------------------------------ Structure ptMenu Dim iEnable As Short <VBFixedString(12), MarshalAs(UnmanagedType.ByValTStr, SizeConst:=12)> Public iName As String Dim iBackColor As Integer Dim iMenuFlag As Short End Structure Dim gtmenu(63 * 9) As ptMenu ------------------------------------ VC++ ------------------------------------ #define TMENUMAX 63 * 9 typedef struct { short iEnable; char Name[12]; long iBackColor; short iMenuFlag; } stMenu; typedef struct { stMenu sdProgMenu[TMENUMAX]; } vbProgMenu; extern "C" void WINAPI DbRGetMenuMsg( vbProgMenu *buf ) { } ------------------------------------ このような宣言を行い、VB.netから、API関数を呼び出ししても vb.net側でセットした値が正しくVC側に反映されません。 0番目の配列の値は、VC側に正しくわたりますが、1番目以降の 配列の値がずれているようです。 構造体に、アライメントをする必要がありそうですが、 どなたか、ご教授いただけませんでしょうか? (例) gtmenu(1).iBackColor = 15 ←この値は、VC側で正しく参照できない gtmenu(0).iName = "12345678901" ←この値は、VC側で正しく参照できる call DbRGetMenuMsg(gtmenu(0)) ちなみに、iNameの変数をVCも、VB.netもコメントアウトすると、正しくなります。 String文字列宣言方法に、何か必要でしょうか? よろしくお願いいたします。
分類:[.NET]