2012-01-05 6 views

答えて

1

どちらもありません。 Windowsは、以下の手段の1つを介してDLLを見つけることができなければなりません:

  • あなたのEXEと同じディレクトリ
  • SetDllDirectory()で指定されたディレクトリ、(
  • システムディレクトリを使用した場合、C:\デフォルトではWINDOWS \ system32に)
  • 16ビットのシステムディレクトリ(C:\ WINDOWS \デフォルトでシステム)
  • 現在のデフォルト・ディレクトリ(Environment.CurrentDirectory)PATH環境ヴァリアーに記載されているディレクトリの
  • 1 ble

第1のものを優先し、第2のものにフォールバックする必要があります。

+0

64ビットマシン用にc:\ windows \ syswow64を追加していただきありがとうございます。私はこのサービスがネイティブDLLを使用するWCF環境内でどのように動作するかを理解しようとしています。この場合、これらのネイティブはサービスlibと同じディレクトリからロードされないため、architctureに応じてsystem32またはsyswow64からロードされます。これは正しいです? –

+0

これは自動的です.32ビットプロセスは、system32の代わりにsyswow64にリダイレクトされます。 –

+0

64ビットOSでは、SysWow64には32ビットのDLLが含まれています。それらは32ビットのexes用です。 System32には、64ビットのDLLが含まれています。後ろ向きですが、機能します。 64ビットのexeは32ビットのdllをロードできないため、逆に32ビットのexeは64ビットのdllをロードできないため、パスにはもう一方のパスは含まれません。 –

関連する問題