2012-01-05 2 views
0

MSDN 당신이 어떤 경로를 제공하지 않는 경우.NET의 P는/

이은을 뜻

는, DLL이 실행 시 현재 경로에 있어야합니다 말한다 DllImportAttribute.Value 속성에 대한 설명을 호출 현재 실행중인 디렉토리 또는 시스템 PATH 환경 변수에 나열된 디렉토리 중 하나?

TIA.

답변

1

아니요. Windows는 다음과 같은 방법 중 하나를 통해 DLL을 찾을 수 있어야합니다 :

  • 당신의 EXE와 같은 디렉토리
  • 있는 SetDllDirectory()에 지정된 디렉토리 (
  • 시스템 디렉토리를 사용하는 경우 C : \ 기본적으로 WINDOWS \ system32를)
  • 16 비트 시스템 디렉토리 (C : \ WINDOWS \ 기본적으로 시스템)
  • 현재 기본 디렉토리 (있는 Environment.CurrentDirectory) PATH 환경 바리 아에 나열된 디렉토리의
  • 하나 ble

두 번째로 크게 선호해야합니다.

+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을로드 할 수 없으므로 경로에는 다른 dll이 포함되지 않습니다. –