掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VC++のDLLからVB.NETへ文字列を渡すには? (ID:62296)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
すいません。初めて質問させていただきます。 VB.NETから、VC++6.0で作成したDLLを呼び出してファイルに組み込んだヘッダーの文字を戻す処理を行いたいのですが、文字列の引渡しがうまくいきません。 インタフェースは、VB側がStringBuilder、VC側がBSTRで行っていて、引き渡そうとした文字数が、16文字以内であればうまくいくのですが、StringBuilderのDefaultcapacityの16文字以上になると、「System.ArgumentOutOfRangeExceptionのハンドルされていない例外が 発生しました。追加情報 :容量が最大値を超えています。」 というエラーが発生してしまいます。 すいませんが、どなたか心当たりのあるかたよろしくお願いします。 以下ソースです。 ===================================================================== DLL側ソース(該当部分以外省略) (VC++6.0 SP6 開発OS:Windows2000SP4) int __stdcall FunctionA(BSTR *user_info) { *user_info =SysAllocStringByteLen("abcdefghijklmnopqrstuvwxyz",26); //戻す文字列を格納 return 0; //成功 } ===================================================================== VB.NET側ソース(該当部分以外省略) (VB.NET 開発OS:WindowsXP SP1) '宣言部分 Public Declare Function FunctionA Lib "AAA.dll" ( _ ByRef user_info As System.Text.StringBuilder ) As Integer '呼び出し部分(ボタンクリック) Dim intRet as integer Dim strRet As New System.Text.StringBuilder(81, 81) 'キャパシティとマックスキャパシティを最大81文字に設定) 'DLL関数呼び出し intRet = FunctionA (strRet) 'ここでエラーになって値がもどってこない(16文字以上の場合) '以下省略 =====================================================================
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.