none
64bit 環境での 32bit アプリで LoadLibrary() が成功しない RRS feed

  • 質問

  • 環境は WindowsXP 64bit edition です。
    VisualStudio2003 で作成した WIN32 C++ プロジェクトを 2005 に変換しました。

    XP 32bit 環境では成功する ::LoadLibrary() ですが、64bit 環境では成功しません。
    エラーは「指定されたモジュールが見つかりません。」です。
    プログラムはタスクマネージャから 32bit 動作している事を確認してます。
    DLL は system32 に存在しています。

    OSインストールドライブはCで、目的の DLL は nvcpl.dll だとして、
    c:\windows\system32\regsvr32.exe c:\windows\system32\nvcpl.dll
    は成功しますが
    c:\windows\SysWOW64\regsvr32.exe c:\windows\system32\nvcpl.dll
    は上記同じエラーで失敗します。

    wow64 とやらの仕組みが解ってないせいだろうと思いますが、失敗する理由、
    どうしたら成功するのかが解りません。

    よろしくお願いします。

    2006年10月29日 13:25

すべての返信

  • 64bitプログラムは64bitのDLLやCOMしか呼び出せません。

    上記の情報だけじゃなんともいえませんが、WOWの仕組みを勉強してください。

    基本は32bitは32bit, 64bitは64bitで統一するということです。

    2006年10月29日 15:32
  • >64bitプログラムは64bitのDLLやCOMしか呼び出せません。

    それは知ってました。
    system32 に 64bit の DLL が入る事もあるのでしょうか。
    もしそうなら DLL が 32bit か 64bit かを知る方法などはあるのでしょうか。

    それと WOW についての仕組みが解るドキュメントの場所など教えて頂けたら助かります。

    よろしくお願いします。

    2006年10月29日 16:34
  • > system32 に 64bit の DLL が入る事もあるのでしょうか。

    というか、System32 は 64 ビットのファイルがインストールされるところです。
    32 ビットのファイルは SysWOW64 です。

    > それと WOW についての仕組みが解るドキュメントの場所など教えて頂けたら助かります。

    ここからダウンロードできるドキュメントではいかがでしょうか。

    Best Practices for WOW64
    http://www.microsoft.com/whdc/system/platform/64bit/WoW64_bestprac.mspx

    2006年10月29日 22:37
  • >というか、System32 は 64 ビットのファイルがインストールされるところです。

    あ、そうなんですか。何か不思議ですね。
    wow64 のドキュメント、じっくり読んでみます。
    ありがとうございます。

    2006年10月30日 5:44