DLL VBとC++
VBAからVC++2005のDLLを呼び出すプログラムを書いています。
VB側で作成したcpp_proc関数を呼ぶとVBアプリ自体が落ちました。
DLLのreturnの直前に以下のMessageBoxで表示させるとそこまでは表示され、
リターンを押すと、落ちました。
VB側の引数の値 String * 8192が悪いのでしょうか?
return直前まで動作していたので、DLLの戻り値に何か原因があるのでしょうか?
ついでの質問ですが、DEFの @1は無くても動くのでしょうか?
意味が知りたいです。
// ----- C++ (DLL側) -----
int __stdcall cpp_proc(LPCSTR inp, LPSTR out)
{
... 省略
MessageBox(0, "ここまで通過", "debug", MB_OK);
return 0;
}
// ----- DEF -----
LIBRARY "example"
DESCRIPTION 'テスト'
EXPORTS
; 明示的なエクスポートはここへ記述できます
cpp_proc @1
'----- VB側 -----
Public Declare Function cpp_proc Lib "example.dll" _
(ByVal inp As String, ByRef out As String) As Integer
Public Sub Test()
Dim ret As Integer
Dim inp As String
Dim out As String * 8192
ret = cpp_proc(inp, out)
MsgBox("ret=[" & Cstr(ret) & "]");
End Sub
お礼
ありがとうございました。