プロが教える店舗&オフィスのセキュリティ対策術

#DLLをCOMにしたり、タイプライブラリを作成すればString型(BSTR)でも
特に問題はなくなります。
VC++で文字列を返すDLLを作ってVBで呼んでいます。
DLLの中でのスタック(Stack)サイズの問題みたいですが、
DLLは自分のスタックを持たなくてそれを使うAppのスタックを使うとしていますが、間違っていたら教えてください。そしてどうすればこのエラーを避けることができて、ただしくデータをVB側で受け取ることができるのでしょうか。

しかし返すデータが大きく(たとえば3MBの文字列)なると『実行エラー28 スタック領域が不足しています。』というエラーメッセージが出て終了されます。

VC++6.0
__declspec(dllexport) VARIANT WINAPI FunA()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

COleVariant vntA = <3MB程度の文字列> ;
return vntA.Detach();

}

VB6.0
Private Declare Function FunA _
Lib "Communication.dll" () As Variant

Dim strRet As String
strRet = FunA()

A 回答 (1件)

一旦Variantで格納してもだめでしょうか?



Dim vntRet As String
Dim strRet As String
vntRet = FunA()
strRet = vntRet

VBのEXEのスタックサイズって確か変更できないんですよねぇ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!