2012-12-25 2 views
0

내 코드는 LoadLibraryA ("someDLL.dll"); 그것은 someDLL.dll 파일을 검색하기 시작 경로 무엇입니까? 또 다른 질문 : LoadLibraryA 함수는 대/소문자를 구분합니까? 내 말은 SomeDLL.dll이로드되지 않는다는 뜻입니까?LoadLibrary는 어디에서 파일을 찾으십니까?

+0

올바르게 기억한다면 온라인 설명서에서 검색 전략에 대해 많이 이야기합니다. 나는 거기에서 볼 것이다.최대한 멀리 대소 문자를 구분하는, 그것은 문서에 명시 적으로없는 경우 자신을 테스트하기 쉬운 것이어야합니다 ... – tmpearce

답변

2

LoadlLibrary 문서 비고에서 검색 순서를 지정합니다

lpFileName이 경로를 포함하지 않으며, 동일한 기본 이름과 확장자의 핸들을 반환 기능을 가진 두 개 이상의 로드 모듈이있는 경우 먼저로드 된 모듈.

lpFileName 매개 변수에 파일 이름 확장명이 지정되지 않은 경우 기본 라이브러리 확장명 인 .dll이 추가됩니다. 그러나 문자열의 파일 이름에는 확장명이없는 모듈 이름을 나타내는 후행 지점 문자 (.)가 포함될 수 있습니다. 경로가 지정되지 않으면 함수 은 기본 이름이 의 기본 이름과 일치하는로드 된 모듈을 검색하여로드합니다. 이름이 일치하면로드가 성공합니다. 그렇지 않으면 함수는 파일을 검색합니다. [...]

DLL 검색 순서에 대한 자세한 내용은 Dynamic-Link Library Search Order을 참조하십시오.

파일 이름은 대소 문자를 구분하지 않으므로 NTFS 및 FAT 파일 이름이 있습니다. 그것은 대소 문자 구분 가정하지 않도록 fundamental rule입니다 :

명명 규칙

다음과 같은 기본적인 규칙은 파일 및 디렉토리 생성하는 응용 프로그램 및 프로세스에 유효한 이름을 사용

에 관계없이 파일 시스템의 : [...]

대소 문자를 구분하지 마십시오.

2

MSDN 라이브러리 기사 Dynamic-Link Library Search Order 윈도우 XP SP2로 시작하는 기본값입니다 SafeDllSearchMode을 사용하는 데스크톱 응용 프로그램에 대한 검색 순서 지정 :

  1. 디렉토리를 응용 프로그램로드 한 .
  2. 시스템 디렉터리. GetSystemDirectory 함수를 사용하여이 디렉터리의 경로를 가져옵니다.
  3. 16 비트 시스템 디렉토리. 이 디렉토리의 경로를 가져 오는 기능은 없지만 검색됩니다.
  4. Windows 디렉터리입니다. GetWindowsDirectory 함수를 사용하여이 디렉터리의 경로를 가져옵니다.
  5. 현재 디렉토리.
  6. PATH 환경 변수에 나열된 디렉토리. 여기에는 App Paths 레지스트리 키로 지정된 응용 프로그램 별 경로가 포함되지 않습니다. App Paths 키는 DLL 검색 경로를 계산할 때 사용되지 않습니다.
관련 문제