2011-11-15 2 views
0
<DllImport("XYZ.dll")> 

위의 문장에서 FeeEngineDll.dll의 기본 경로는 누구에게 말해 줄 수 있습니까?<DllImport ("XYZdll")>에있는 DLL의 기본 경로>

+1

아마도 응용 프로그램 도메인 또는 전역 어셈블리 캐시의 경로가 될 것입니다 : 현재 시스템에 알려진 된 DLL의 목록은 다음 레지스트리 키를 참조하십시오. 먼저 시도해보십시오. (해당 AppDomain.CurrentDomain.BaseDirectory) – albertjan

+0

http://msdn.microsoft.com/en-us/windows/ms682586 –

+0

여기에 귀하의 질문에 더 완전한 대답입니다 : http://stackoverflow.com/a/26710419/3914921 –

답변

1

DllImport 특성을 사용할 때 전체 경로 또는 상대 경로를 제공 할 수 있습니다. 경로를 제공하지 않으면 DLL이 다른 방법으로로드되지 않는 한 런타임에 DLL이 현재 경로 (응용 프로그램 작업 디렉토리 및 PATH 환경 변수를 통해 지정된 모든 경로)에 있어야합니다. DLL이 SetDllDirectory 함수를 통해 현재 디렉토리에 배치되지 않은 경우 Windows가 DLL을 찾도록 설득 할 수 있습니다.

은 참고 항목 : DLL에 대한 시스템을 검색하기 전에 Dynamic-Link Library Search Order

0

, 같은 모듈 이름의 DLL이 이미 메모리에로드되는 경우는 다음과

C:\Windows\SysWOW64 
C:\Windows\System32 
  • 을 확인, 시스템은로드 된 DLL을 사용합니다 (디렉토리가 무엇이든간에). 시스템은 DLL을 검색하지 않습니다.

  • DLL이 응용 프로그램이 실행되는 Windows 버전의 알려진 DLL 목록에있는 경우 시스템은 알려진 DLL (알려진 DLL의 종속 DLL이있는 경우 해당 복사본)을 사용합니다. 시스템은 DLL을 검색하지 않습니다.

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs