タイトル : Re^4: VB6.0のExeとVC++6.0のDLLの文字列 投稿日 : 2008/05/21(Wed) 10:24 投稿者 : VB
状況は少し変わりまして。。 ----------VB---------------------------------------------------------------- ☆標準モジュール Public Type DLL flg1 As String flg2 As String End Type Public Declare Function test Lib "test.dll" (PINFO As DLL) As Long ☆フォーム Dim PINFO(0) As DLL Dim rtn As Long PINFO(0).flg1 = "X" PINFO(0).flg2 = "Y" rtn = test(PINFO(0)) Text1.Text = rtn -------------------------------------------------------------------------------- ----------------VC++------------------------------------------------------------ typedef struct DLL{ char flg1; char flg2; }; _declspec(dllexport) int WINAPI test(const DLL* PINFO[1]) { int fret; if ((PINFO[0]->flg1 != 'X' ) && (PINFO[0]->flg1 != 'Y')) { fret = 0 - 12; return(fret); } if ((PINFO[0]->flg2 != 'X') && (PINFO[0]->flg2 != 'Y')) { fret = 0 - 13; return(fret); } return 0; } 上記のようなプログラムを作ったのですが。 VC++でデバックを行うと PINFO[0]->flg1 = "X" PINFO[0]->flg2 = "" PINFO[1]->flg1 = "Y" PINFO[1]->flg2 = "" の値が入ってしまいます。 Q1. VC++でPINFO[1]と書いているのになぜ2つ目のテーブルが出来てしまうのか。 分かりましたら宜しくお願いいたします。 Q2. 試しにVBの構造体の宣言で Public Type DLL flg1 As String * 1 flg2 As String * 1 End Type としてみたところひとつのテーブルで値が代入されたのですが 文字化けしてしまいました。 これを防ぐ方法もありましたら宜しくお願いいたします。 魔界の仮面弁士さまいつもありがとうございます。 少しずつですが、進行しています。。 |