タイトル : Re^2: VB6.0のExeとVC++6.0のDLLの文字列 投稿日 : 2008/05/20(Tue) 16:56 投稿者 : VB
> 今回の場合は、[ByRef x As ユーザー定義型] にして PInfo(0) を渡すか、 > あるいは、[ByVal x As Long] にして VarPtr(PInfo(0)) を渡してみてください。 前者の『[ByRef x As ユーザー定義型] にして PInfo(0) を渡す』 で実行してみたところ。 VB ・標準モジュール Public Declare Function test Lib "test.dll" (ByRef PINFO As DLL) As Long ・フォーム Dim PINFO(0) As DLL PINFO(0).flg = "X" と書き直しました。 ですが、VC++では『式を評価出来ません』という返答が・・・。 後者の『[ByVal x As Long] にして VarPtr(PInfo(0)) を渡す』 で実行してみたところ VB ・標準モジュール Public Declare Function test Lib "test.dll" (ByRef PINFO As DLL) As Long ・フォーム Dim PINFO(0) As DLL PINFO(0).flg = "X" rtn = VarPtr(PINFO(0)) Text1.Text = rtn と書き直しましたが、7桁の数値が返ってきてしまいました。 何がいけなかったのでしょう?(^^; > > flg As String * 1 > > PINFO(0).sflg = "X" > ん? メンバ名が異なっているような。 打ち間違えました(^^; すみません。 > 最初の 1 は、SAFEARRAY 中の次元数を表す情報(unsigned short cDims)かな…。 おそらくそれです。。 |