2009-03-29 11 views
2

간단한 "HelloWorld"win32 콘솔 응용 프로그램을 실행하려고하면 "dll을 찾을 수 없습니다 : 응용 프로그램을 다시 시작하면 문제가 해결 될 수 있습니다"오류가 발생합니다. .dll의 위치를 ​​알고 있습니다. 명령 프롬프트에서 .exe를 실행할 때 위치를 지정하는 방법은 무엇입니까?win32 콘솔 응용 프로그램의 라이브러리 경로 설정

추 신 : .dll을 .exe의 현재 디렉토리로 복사하는 것이 문제를 해결하는 것으로 보이지만이 경우에는 적합하지 않습니다.

답변

4

DLL 로딩은 창문 배관에서 일어납니다.

DLL이 응용 프로그램과 동일한 디렉터리에 없으면 PATH가 자동으로 검색되어 디렉터리를 찾습니다.

그래서 가장 간단한 해결책은 PATH에 DLL이 들어있는 디렉토리를 추가하는 것입니다. 코드에 따라 DLL을로드해야하는시기에 따라 "HelloWorld"응용 프로그램 내부에서 PATH를 (일시적으로) 수정할 수 있습니다.

1

LoadLibraryEx에 대한 설명서에는 Windows에서 DLL을 검색하는 방법에 대한 몇 가지 설명이 있습니다. DLL에 대한 전체 경로를 구성하거나 SetDllDirectory 함수를 사용하여 검색 경로에 디렉토리를 추가 할 수있는 경우 LOAD_WITH_ALTERED_SEARCH_PATH 플래그를 사용해 볼 수 있습니다.

1

내 컴퓨터> 속성> 고급> 환경 변수> 시스템 변수> 편집> 변수 값을 마우스 오른쪽 버튼으로 클릭하고 수동으로 영구적으로 Windows PATH에 경로를 추가 (영구적 = 제거) 할 때 세미콜론 "전에 모든 것을"의미) dll의 전체 경로를 붙여 넣습니다.

Windows는 현재 디렉터리에서 항목을 찾을 수 없을 때마다 경로를 검색합니다.

1

에서 : 암시 적 및 명시 적 모두 연결로 http://msdn.microsoft.com/en-us/library/7d83bc18.aspx

등의 Kernel32.dll 및 User32.dll을 같은 "알려진 DLL을"Windows 용 첫번째 검색합니다. 윈도우 후 다음과 같은 순서로 DLL을위한 검색 :

  1. 현재 프로세스의 실행 모듈이있는 디렉토리.

  2. 현재 디렉토리.

  3. Windows 시스템 디렉토리. GetSystemDirectory 함수는이 디렉터리의 경로를 검색합니다.

  4. Windows 디렉토리. GetWindowsDirectory 함수는이 디렉터리의 경로를 검색합니다.

  5. PATH 환경 변수에 나열된 디렉토리.

관련 문제