|
分類:[VC++(C++/CLI)]
分類:[VC++(C++/CLI)]
動作環境 Visual C++ (Visual Studio 2005) VB6.0 SP5 WinXp
C++でCOMを作成しました。 それをVBから呼び出し文字列もしくは数値を受け取りたいのですが どうしても文字列が空で参照できません。
C++側 ------------------------------------------------------------------------------------------------- 宣言部分 [id(5), helpstring("メソッド get_test")] HRESULT get_test([in] BSTR str, [out] BSTR* strout);
処理部分 STDMETHODIMP Caaa::get_test(BSTR str, BSTR* strout) { CComBSTR testBstr("あいうえお"); BSTR bstr = testBstr; // bstrにはあいうえおが格納されている
CAtlString aaa;
aaa = (WCHAR*)str;
MessageBox(NULL,spBstr,aaa,0); // あいうえおが表示される MessageBox(NULL,bstr,aaa,0); // あいうえおが表示される
strout = &bstr; // out引数に"あいうえお"のアドレス格納 // これがVB側で参照できればいい。
return S_OK; }
vb側 -------------------------------------------------------------------------------------------------
Private Sub Command3_Click() On Error GoTo Err_Command3_Click Dim fff As aaa
Dim str1 As String Dim str2 As String
str1 = "わたった" ' この文字がC++に渡っているのは確認済
Set fff = CreateObject("ttt.aaa.1") fff.get_test str1, str2 'C++メソッド実行
MsgBox (str2) ' str2が空になっており参照できない
Set fff = Nothing Exit Sub
End Sub
この方法でVB側に"あいうえお"の文字が渡ってこないのはなぜでしょうか? 色々と試しているのですが、str2は参照渡しで渡ってこないのでしょうか? それとも根本的に何か間違っているのか、よくわからない状態になってしまいました。
助言いただけたら幸いです。 宜しくお願いします。
|