Last Updated 2004/03/23 |
Programming Tips Visual C++ DLL | 索 引 |
VC++から文字列を渡す方法
2004/03/23
VB で作成した ActiveXDLL に VC++ から文字列を渡す方法 VB ActiveXDLL
VC側
上記の様に char[] を強引に BSTR* でキャストしても望む効果はない. MFC や ATL のヘッダで定義されている A2OLE() などのマクロを使う. (以下参考)
だからと言って
こうするのは危険である.(上記でも VB ActiveXDLL には文字列は渡る)引数が BSTR* ってことは、aaa に文字列が帰ってくることが期待される. プロパティ/メソッドに文字列を指定する場合
のようにする.引数が BSTR* の時,つまり文字列を受け取る可能性がある場合は上記の様に
みたいにしてはいけない.MOJI() の実行により、"MOJIMOJI" よりも長い文字列が帰ってきたらメモリを破壊する. 以下に,「文字列を渡す時」「文字列を受け取る時」の疑似コードを示す.
VB は言語中で OLE 文字列(BSTR)の存在を隠蔽している. VC++ で BSTR を扱うためには ・VC コンパイラ COM サポートの _bstr_t を活用する ・MFC CString の BSTR サポートを活用する ・BSTR 系 API を駆使して自分でがんばる などの方法がある. 参照 BSTR変換 |
|