Windows 시스템에서 DLL의 디렉터리를 가져 오는 것에 대한 질문이 있습니다.DLL의 디렉터리를 가져 오기
상황은 다음과 같습니다.
DLL과 EXE 파일이 있습니다. exe 파일은 실행할 DLL을로드해야합니다. 이 두 모듈은 서로 다른 디렉토리에 있습니다. 또한 DLL의 디렉터리를 변경할 수 있습니다. 이제 "런타임"에 DLL의 디렉터리를 가져와야합니다.
어떻게하면됩니까?
미리 감사드립니다.
Windows 시스템에서 DLL의 디렉터리를 가져 오는 것에 대한 질문이 있습니다.DLL의 디렉터리를 가져 오기
상황은 다음과 같습니다.
DLL과 EXE 파일이 있습니다. exe 파일은 실행할 DLL을로드해야합니다. 이 두 모듈은 서로 다른 디렉토리에 있습니다. 또한 DLL의 디렉터리를 변경할 수 있습니다. 이제 "런타임"에 DLL의 디렉터리를 가져와야합니다.
어떻게하면됩니까?
미리 감사드립니다.
DLL을로드하거나로드 된 경로를 찾아야합니까?
MSDN에서 DLL 경로 검색 알고리즘은 documented이며 SearchPath 함수를 사용하여 시스템 경로를 검색 할 수 있습니다.
DLL이로드 된 후로드 된 경로를 찾으려면 GetModuleFileName 함수를 사용하십시오. LoadLibrary, GetModuleHandle에 의해 반환 된 모듈 핸들을 사용하거나 hinstDLL로 DllMain에 전달하여 DLL의 전체 경로를 반환합니다.
예,로드 할 경로를 찾아야합니다. 감사합니다. . – user296359
사용자 정의 검색 알고리즘을 구현해야합니다. exe는 어느 DLL이 필요한지와 DLL의 위치를 알고 있습니다. 따라서 경로를 찾아서 LoadLibrary()와 함께 사용하십시오.
가능하면 BT는 COM 사용을 고려합니다. 이 방법으로 파일 경로와 완전히 독립적 인 CLSID에 의해 DLL을 사용할 것입니다.
"DLL의 디렉토리가 변경 가능하다"는 것은 무엇을 의미합니까? 최초 설치 후 이동 될 수 있다는 의미입니까 아니면 다른 시스템의 다른 위치에 설치 될 수 있다는 것입니까? – hmcclungiii
아니요, 사실, 많은 exe 파일 용 DLL을 작성하고 있습니다. 각 exe는 다른 디렉토리에 넣을 수 있습니다. – user296359
(DLL이 exe에 의해로드되면 DLL의 위치는 변경되지 않습니다.) – user296359