VC++(MFC 共有DLL)で作成したDLLをVBで利用するにはどうしたらいいでしょうか? VS2005環境です。

以下のように文字列を単純にDLLから返したいと考えています。

VC++側

extern "C" BOOL PASCAL EXPORT test(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return "abcde";
}

Def file
LIBRARY "dlltest"

EXPORTS
; 明示的なエクスポートはここへ記述できます
test

VB側
Declare Function test Lib "C:\Visual Studio 2005\Projects\dlltest\debug\dlltest.dll" () As String

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
TextBox1.Text = test

End Sub

エラー内容:保護されているメモリーに読み書きをしようとした。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/05/14 21:05:51
  • 終了:2010/05/14 23:03:25

回答(1件)

id:ko8820 No.1

ko8820回答回数1221ベストアンサー獲得回数692010/05/14 21:18:14

ポイント60pt

http://homepage1.nifty.com/MADIA/vc/vc_bbs/200606/200606_0606006...

SysFreeString( *str );

をつかってDLL側でメモリー確保するか、

VBから文字列のアドレスを渡すかの

どちらかです。

id:mai_mai_mail

ありがとうございました。

extern "C" BOOL PASCAL EXPORT test(char *str)

{

AFX_MANAGE_STATE(AfxGetStaticModuleState());

strcpy(str,"abcdef");

return 0;

}

2010/05/14 23:02:49

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません