C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: ByRefで宣言した文字列の受け渡し


(過去ログ 63 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■36565 / inTopicNo.1)  ByRefで宣言した文字列の受け渡し
  
□投稿者/ たにぐちぇ (3回)-(2009/06/01(Mon) 19:41:53)

分類:[C/C++] 

#36559で投稿したばかりで申し訳ないのですが

C++からVB6.0で作成したActiveX DLLの起動をおこなうプログラムを作成中で
#36559で解答を頂いてBSTR型を使用することにより

Public Function main(ByVal moji1 As String, ByVal moji2 As String)
MsgBox x & y
End Function

というテストプログラムで実現できました
しかし

Public Function main(ByRef moji1 As String, ByRef moji2 As String) as long
moji1 = moji1 + "001"
moji2 = moji2 + "002"
main = 0
End Function

というようにByValからByRefに変更し
受け取った値を編集して返却するように修正をおこなったら
C++側でコンパイルエラーが発生してしまいます

C++側では

BSTR MyBstr1 = SysAllocString(L"test01");
BSTR MyBstr2 = SysAllocString(L"test02");

と宣言しActiveX DLLのインスタンスを作成し
そのまま

pClass1->main( MyBstr1, MyBstr2, &z );

というような形で呼び出しています
C++側の呼び出し方をどのように対応させたらよいのでしょうか?
引用返信 編集キー/
■36571 / inTopicNo.2)  Re[1]: ByRefで宣言した文字列の受け渡し
□投稿者/ Azulean (399回)-(2009/06/01(Mon) 23:50:03)
No36565 (たにぐちぇ さん) に返信
> C++側でコンパイルエラーが発生してしまいます
質問をされる場合は、そのコンパイルエラーも提示しませんか?
回答者が推測可能かもしれませんが、外していた場合には回答が無駄になってしまうこともあります。


> BSTR MyBstr1 = SysAllocString(L"test01");
> BSTR MyBstr2 = SysAllocString(L"test02");
> pClass1->main( MyBstr1, MyBstr2, &z );
BSTR*を求められていると言うことはありませんか?
それに対してBSTRを渡していたらまずいと思いますが…。(どのように解釈されるか忘れた…)
引用返信 編集キー/
■36586 / inTopicNo.3)  Re[2]: ByRefで宣言した文字列の受け渡し
□投稿者/ たにぐちぇ (4回)-(2009/06/02(Tue) 10:58:32)
申し訳ありませんでした
コンパイルエラーも提示します

--------------------構成: TestCpp - Win32 Debug--------------------
コンパイル中...
TestCpp.cpp
C:\TestCpp\TestCpp.cpp(50) : error C2664: 'main' : 1 番目の引数を 'unsigned short *' から 'unsigned short ** ' に変換できません。 (新しい機能 ; ヘルプを参照)
指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。
cl.exe の実行エラー
ブラウザ データベースを作成中...

TestCpp.exe - エラー 1、警告 0
引用返信 編集キー/
■36587 / inTopicNo.4)  Re[3]: ByRefで宣言した文字列の受け渡し
□投稿者/ Blue (13回)-(2009/06/02(Tue) 11:07:49)
ためしに、
pClass1->main( &MyBstr1, &MyBstr2, &z );
としたらどうなるか。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -