• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:16ビットDLLから32ビットDLLをコールする方法)

16ビットDLLから32ビットDLLをコールする方法

このQ&Aのポイント
  • VC++を使用して16ビットDLLから32ビットDLLを呼び出す方法について調査しています。
  • VB4.0(16bit)のEXEから、16bit版のDLLをコールし処理を行いたいが、16bit版DLLで扱えないVC++の関数を利用する必要があります。
  • そのため、16bit版DLLの機能を32bit版DLLで作成し、16bit版DLLから32bit版DLLを呼び出す方法を探しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • akinori_s
  • ベストアンサー率60% (21/35)
回答No.2

#1akinori_sです。 microsoftにサンプルがあったので参考にしてみて下さい。

参考URL:
http://www.microsoft.com/japan/support/kb/articles/JP104/0/09.asp
cyoko
質問者

お礼

お礼が遅くなりました。たいへん参考になりました。 現在、いろいろ調べています。なんとかなりそうな気がします。 ありがとう御座いました。

その他の回答 (1)

  • akinori_s
  • ベストアンサー率60% (21/35)
回答No.1

32bit版から16bit版を呼ぶのはサンクを使用して実行した事は あったけど、逆は試した事が無いのでちょっと自信ないです。 多分ですが、試してみて下さい。 使用する関数は  LoadLibraryEx32W  (32版DLLをロードする)  FreeLibrary32W   (32版DLLを開放する)  GetProcAddress32W  (32版DLLの関数ポインタを取得)  CallProc32W     (32版DLLの関数をCALLする) です。 まず16bit版DLLですがDEFファイルに IMPORTS  kernel.LoadLibraryEx32W  kernel.FreeLibrary32W  kernel.GetProcAddress32W  kernel.CallProc32W を書いておきます。 で16bit版DLLのソースファイルで extern "C" DWORD FAR PASCAL LoadLibraryEx32W(LPCSTR lpszLibFile, DWORD hFile, DWORD dwFlags); extern "C" DWORD FAR PASCAL GetProcAddress32W(DWORD hModule, LPCSTR lpszProc); extern "C" DWORD FAR PASCAL FreeLibrary32W(DWORD hLibModule); extern "C" DWORD FAR PASCAL CallProc32W( DWORD, DWORD, DWORD, DWORD, DWORD, LPVOID, DWORD, DWORD); 上記の宣言を行っておいて、後は実際に関数内で上記の関数を使用して32bit版DLL を呼べばいいと思います。

cyoko
質問者

お礼

ご回答ありがとうございます。参考にしていろいろ試してみます。 ちなみに、CallProc()の関数がどこを探しても見つかりませんが、 もし、よろしければお教え下されば幸いと思っております。 以上

関連するQ&A