掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB.NETで宣言した変数・構造体をVC++で自作したDLL内で共有するには (ID:81294)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
VB.NETで宣言した変数・構造体をVC++で自作したDLLから触りたく、DLLにて変数・構造体のアドレスを取得した後、値の変更を行いました。 VB.NETで確認したところ、整数型は値が変更されているのですが、構造体と文字列は値が変更されず困っています。 コーディングを下記のように行ったのですが、 どうやったら構造体・文字列を共有することができるのでしょうか? どなたか教えて下さい。 よろしくお願い致します。 *** VC++のソース *** //構造体・変数宣言 struct param{ long num; unsigned char LEVAR[10]; char CDUSR[5]; }; struct param *mpara; long *mlong char *mchar //変数・構造体のアドレス取得 SUB_API void __stdcall setaddr(long *plong, struct param *ppara, char *pchar) { mlong = plong; mpara = ppara; mchar = pchar; } // setaddr関数にて取得したアドレスを使用して値変更 SUB_API void __stdcall setdata() { *mlong = 200; mpara->num = 200; mpara->LEVAR[0] = 200; strcpy((char*)mpara->CDUSR, "BBB"); strcpy((char*)mchar, "BBB"); } *** VB.NETのソース *** '構造体・変数宣言 <StructLayout(LayoutKind.Sequential, _ CharSet:=CharSet.Ansi)> structure param Public NUM As Integer <MarshalAs(UnmanagedType.ByValArray, SizeConst:=10)> _ Public LEVER() As Byte <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=5)> _ Public CDUSR As String Public Sub InitStruct() ReDim LEVER(9) NUM = 100 LEVER(0) = "100" CDUSR = "AAA" End Sub End Structure Public mpara As param Public mint As Integer <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> _ Public mstr As String 'DLL宣言 Private Declare Sub setaddr Lib "sub.dll" (ByRef mint As Integer, _ ByRef mpara As param, _ ByRef mstr As String) Private Declare Sub setdata Lib "sub.dll" () '実行処理部 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click mpara.InitStruct() mint = 100 mstr = "AAA" setaddr(mint, mpara, mstr) setdata() End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.