※ ChatGPTを利用し、要約された質問です(原文:MFC-DLL VBからCallしStackError[No.741430の続き])
MFC-DLL VBからCallしStackError[No.741430の続き]
このQ&Aのポイント
VBから呼び出すDLLの中でのスタックサイズの問題を避ける方法はありますか?
大きなデータを受け取る際にスタック領域が不足してエラーメッセージが表示される問題が発生しています。
DLLをCOMに変換したり、タイプライブラリを作成することで問題を解決できる可能性があります。
MFC-DLL VBからCallしStackError[No.741430の続き]
#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()