掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VC作成dllをVB, ACCESSから呼び出すには? (ID:63544)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
初めてdllに挑戦していますが、VB, Accessから呼び出すと 正常に動作する時とエラーになる時があります。 VC:.NET2003 VB:.NET2003 ACCESS:2003 です。 (VC側) extern "C" __declspec(dllexport) void __stdcall Dll_TestMessageBox(); extern "C" __declspec(dllexport) void __stdcall Dll_TestMessageBox(CString str) { CString s = str; -------> (A) AfxMessageBox(s); } (VB, ACCESS側) Declare Sub Dll_TestMessageBox Lib "D:\xxx\yyy\DllTest.dll" (ByVal a As String) Call Dll_TestMessageBox("123") VB、ACCESS共にメッセージボックスは表示されません。 (A)を CString& s = str; にすると、VB、ACCESS共にメッセージボックスは表示され、正常終了します。 ちなみに(A)を最初のままでVCで呼び出すと typedef void (__stdcall *DISPLAYMESSAGE)(CString); HINSTANCE hDllInstance; DISPLAYMESSAGE Dll_TestMessageBox; // 関数アドレス hDllInstance = ::LoadLibrary("D:\\xxx\\yyy\\DllTest.dll"); if( hDllInstance != NULL ) { Dll_TestMessageBox = (DISPLAYMESSAGE)(::GetProcAddress(hDllInstance, "Dll_TestMessageBox")); if( Dll_TestMessageBox != NULL ) Dll_TestMessageBox("123"); } FreeLibrary(hDllInstance); メッセージボックスは表示され、正常終了します。 VCとVB、ACCESSの違いはどこにあるのでしょうか? よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.