掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VC++、VB、VBA共通DLLを作成するには?〜その2〜 (ID:68078)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> どうにでもなるんですね。 はい。 VBA は知りませんが、VB6 でも、LP(C)STR を引数に取る関数は呼べます。 > LPCSTR はconst char *、LPCWSTRはconst WCHAR *とほぼ同等ですよね? ほぼと言うか、完全に同じです。 > if(*Output != NULL) > { > delete[] *Output; > *Output = NULL; > } delete[] は new[] で確保したメモリを開放するのにしか使えません。 VB 側のメモリは new[] で確保されているとは限らないので、これは使えません。 VB と DLL で文字列をやり取りする場合、メモリは VB 側で確保します。 それを DLL 側で解放したり、DLL 側で確保したりは…BSTR と関連 API を使えばできるかもしれませんが、やったことはありませんし、やらないほうがいい気がします。 呼び出し側でメモリを確保する方が設計もシンプルになりますし。 なお、上記サンプルのように文字列をコピーするだけであれば、ReturnValue を解放する必要も無いように思いますが(そこに解放しなければならないポインタを渡さないというのは呼び出し側の責任ではないでしょうか)。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.