問題

Windowsアプリケーションは、通常、同じ名前の2つのDLLを区別することができ、1つは32ビット、もう1つは64ビットである必要があります。

具体的には、FreeImageには32ビットと64ビットのDLLがあり、free_image_path\dist32free_image_path\dist64の2つの別々のフォルダにあり、どちらもシステムPATHに追加しました。しかし、それらを使用するために構築されたアプリケーションはどちらも見つかりません。同じ名前の2つのDLLがあり、それらを区別できないため、これが不思議です。

また、Windows \ systemとwindows \ SysWOW64フォルダに32ビットDLLと64ビットDLLをそれぞれ入れてみましたが、これは32ビットアプリケーションでは機能しましたが、64ビットでは機能しませんでした。

ありがとう。

  ベストアンサー

Windowsは、特定のDLLが32ビットまたは64ビットプラットフォーム用にコンパイルされているかどうかを伝えることができますが、それはあなたが記述する状況では役に立ちません。アプリケーションプロセスのDLLローダーは、DLLインポートのファイル名要件に適合するシステムパス内のDLLを見つけるとすぐに見えなくなります。一致するコードDLLの他の資格はありません。

パスの最初のDLLが32ビットで、アプリケーションが32ビットの場合、DLLロードが機能します。アプリケーションが64ビットの場合、DLLのロードに失敗し、プロセスが中止されます。

2つのDLLをシステムパスに共存させたい場合は、それらに一意のファイル名を与える必要があります。

  同じタグがついた質問を見る

windowsdllpath32bit-64bit