掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
C++のDLLからVBで値を受け取るには? (ID:63157)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
動作環境 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は参照渡しで渡ってこないのでしょうか? それとも根本的に何か間違っているのか、よくわからない状態になってしまいました。 助言いただけたら幸いです。 宜しくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.