DLL 로드 지연
사용처:
- DLL 로드 프로세스를 프로세스가 실행될 때까지 확장합니다. -함수 버전과 운영체제 버전이 일치하는 문제를 해결합니다.
제한:
- 필드를 내보낸 DLL 중 하나가 로드를 지연할 수 없습니다.(글로벌 변수) - Kernel32.dll에서 불러오는 것을 지연할 수 없습니다.이 DLL을 불러와야 LoadLibrary와 GetProcAddress를 호출할 수 있습니다. - DLMain 입구점 함수에서 지연 불러오는 함수를 호출하지 말아야 합니다.(프로그램 충돌이 발생할 수 있음)
사용:
- 코드의 작성과 정상적으로 동일한 - DLL 링크를 사용하여 암시적 링크 선택 - 설정/DELAYLOAD 및/DELAY 링크 스위치이 두 개는 #pragma comment(...)를 사용할 수 없습니다.를 참고하십시오.
1. --Linker--Input--Delay Load DLLs-- DLL, , 。
2. --Linker--Advanced--Delay Loaded DLL -- Support Unload(/DELAY:UNLOAD)。
이렇게 설정한 후 DLL을 로드하는 것은 DLL 요소를 사용할 때입니다.사용할 때, 어디에서 불러왔는지 쉽게 알 수 있도록 DLL이 불러왔는지 판단하는 함수를 추가했습니다.아래와 같다
BOOL IsModuleLoaded(PCTSTR pszModuleName)
{
HMODULE hmod = GetModuleHandle(pszModuleName);
if(hmod==NULL)
return FALSE;
return TRUE;
}
- 여기서 pszModuleName 매개변수는 dll의 이름입니다(.dll 제외). -dll의 함수를 처음 호출하기 전후에 IsModuleLoaded는 각각 FALSE와 TRUE를 되돌려줍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.