タイトル : Re^5: DLLへの文字列ポインタについて 投稿日 : 2008/05/20(Tue) 11:18 投稿者 : neptune
こんにちは ご覧になっていたんですね。^ ^; > VB側から送った文字列の先頭アドレスを見ると、 > Unicodeではなく、ANSI文字列が入っていました。 これはそうなんですよね。 > Q1.自動的にUnicode→ANSIされるのでしょうか? 正直わかりません。 > Q2.DLLの変更は避けたいのです。 > となると、 > Type STRCT > ldat_A As Long ' データA > lptr As Long ' ファイル名 > ldat_B As Long ' データB > End Type > Dim strct_d As STRCT > strct_d.ldat_A = 5 ' データA > StrPtr(StrConv("test.txt", vbFromUnicode)) ' ファイル名 > strct_d.ldat_B = 6 ' データB > ret = DllFunc(strct_d) > の様に処理するのはNGなのでしょうか? DLL側の宣言をそのままにして↑ではできません。 これはUPしたサンプル検証の際確認しました。 で、本題ですが、先にも書きましたように、私は十分な説明が出来るほど スキルがありません。(勉強してないんですが^ ^;) 以前に、VB用のDLLを作成した際、「BSTR およびC文字列の変換」 http://japan.internet.com/developer/20051004/27.html を発見し、MSDNと↑を参考にしました。 ただ、そこには、 「複数言語のアプリケーション(Visual Basicアプリケーションからアクセスされる C++ DLLなど)を書いている場合はBSTR/C文字列の変換が必要である。」 と書かれていますが、ccさんの書かれているように参照のみなら大丈夫なように気も しますが、いかんせんVB用のDLL作成の際にはBSTRを使用するのが常道らしいです。 常道から外れるとろくな事ありませんからね。安全第一です。 申し訳ないですが、これ以上はお役に立てそうもありませんので、 識者の回答をお待ち下さい。 |