2010-04-07 7 views
3

Windows 시스템에서 DLL의 디렉터리를 가져 오는 것에 대한 질문이 있습니다.DLL의 디렉터리를 가져 오기

상황은 다음과 같습니다.

DLL과 EXE 파일이 있습니다. exe 파일은 실행할 DLL을로드해야합니다. 이 두 모듈은 서로 다른 디렉토리에 있습니다. 또한 DLL의 디렉터리를 변경할 수 있습니다. 이제 "런타임"에 DLL의 디렉터리를 가져와야합니다.

어떻게하면됩니까?

미리 감사드립니다.

+1

"DLL의 디렉토리가 변경 가능하다"는 것은 무엇을 의미합니까? 최초 설치 후 이동 될 수 있다는 의미입니까 아니면 다른 시스템의 다른 위치에 설치 될 수 있다는 것입니까? – hmcclungiii

+0

아니요, 사실, 많은 exe 파일 용 DLL을 작성하고 있습니다. 각 exe는 다른 디렉토리에 넣을 수 있습니다. – user296359

+0

(DLL이 exe에 의해로드되면 DLL의 위치는 변경되지 않습니다.) – user296359

답변

6

DLL을로드하거나로드 된 경로를 찾아야합니까?

MSDN에서 DLL 경로 검색 알고리즘은 documented이며 SearchPath 함수를 사용하여 시스템 경로를 검색 할 수 있습니다.

DLL이로드 된 후로드 된 경로를 찾으려면 GetModuleFileName 함수를 사용하십시오. LoadLibrary, GetModuleHandle에 의해 반환 된 모듈 핸들을 사용하거나 hinstDLL로 DllMain에 전달하여 DLL의 전체 경로를 반환합니다.

+0

예,로드 할 경로를 찾아야합니다. 감사합니다. . – user296359

2

사용자 정의 검색 알고리즘을 구현해야합니다. exe는 어느 DLL이 필요한지와 DLL의 위치를 ​​알고 있습니다. 따라서 경로를 찾아서 LoadLibrary()와 함께 사용하십시오.

가능하면 BT는 COM 사용을 고려합니다. 이 방법으로 파일 경로와 완전히 독립적 인 CLSID에 의해 DLL을 사용할 것입니다.

관련 문제