現在、幾つかのActiveX DLLをVBで作成しています。
アマチュアレベルなんですが。
いずれは公開する予定なのですが、ふと気になったので
ご教示いただければ幸いです。
まず一つ目。
VBにはない概念ですが、C言語ではバッファと言うものが重要なようです。
VBで作ったライブラリをCで使う場合、バッファに関する情報を与える
関数が必ず要るのでしょうか?それとも必ずしも必要ではないのでしょうか?
必要なのであれば、関数の戻り値として配列や可変長文字列を指定するのは
避けるべきと言うことになりますね。間違いないでしょうか?
あと二つ目。
VBで作ったライブラリをCで使う場合、引数としての配列や文字列は
どのように渡されるのでしょうか?
VBでは、参照渡しという言葉以上のことは考えませんが、
ByRef宣言した配列がC言語からデータを受け取ると、
この引数を配列を受け取ったものとして処理することが出来るのでしょうか?
実は配列へのポインタが渡されるなんて泣ける話はないんですよねぇえ?
長文ながら、C言語は聞きかじり程度しか知らないのでよろしくです。
> VBで作ったライブラリをCで使う場合、引数としての配列や文字列は
> どのように渡されるのでしょうか?
VBで作成可能なDLLは、ActiveX DLLという形式になります。
この場合、配列は、SAFEARRAY構造体として渡される事になります。
文字列は基本的に BSTR なので、OLECHAR FAR * などで渡します。
http://www.microsoft.com/japan/msdn/vs_previous/vbasic/docs/dll/
あへぇ、こんなものが。
とりあえず読んでみるので、とりあえず解決をつけておきますです。
どうもありがとうございました。