Acesssなどから呼ばれたDLLで文字列を返す方法
-
解説
C言語で文字列を利用するときはスタック領域を使用したり、ヒープ領域から必要な領域を確保(解放し忘れるとえらいこっちゃです)して使用しますが、Access(VBA)などでは文字列を使用するときに勝手に確保されてしまいます。(解放も自動)
関連する関数は下記のとおりです。
SysAllocString SysAllocStringByteLen SysAllocStringLen
戻す形式はAnsiで戻す必要があります。Unicodeで戻すと文字化けします。
これは、Access(VBA)からDLLを呼び出すときに勝手に変換してくれるからです。 -
サンプル(宣言などは省略しています)
BSTR GetString(void) { BSTR ReturnValue = SysAllocStringByteLen(NULL, 10); strcpy((LPSTR)ReturnValue, "戻る文字列"); return(ReturnValue); }
スポンサーリンク
スポンサーリンク
説明がわからないなどありましたらお問い合わせでお知らせください。
ここに掲載された情報を使用したことによって発生した、いかなる損害に対しても
管理者である雅は一切責任を負いません。