2010-01-29 4 views
1

나는 응용 프로그램이로드 될 때 동적 링크 라이브러리가 메모리에로드된다는 것을 알고 있으며 운영 체제 로더에 의해 참조가 해결됩니다. 예를 들어 Windows kernel32.dll, user32.dll 및 gdi32 dll에서 내 응용 프로그램이 kernel32.dll (예 : CreateWindow)의 함수를 참조하면 전체 DLL이 프로세스에로드되거나 아니면 dll?동적 링크 라이브러리

감사합니다.

답변

1

하나의 기능을 참조하면 전체 DLL을 얻게됩니다. DLL의 일부만로드 할 수 없습니다.

누군가의 홈 디렉토리를 찾기 위해 모든 Shell32.dll을 얻으므로 귀찮습니다. 한숨.

2

모든 것이지만 걱정하지 마십시오. dll을 반복해서 다시로드하지는 않습니다. 사용하는 모든 프로그램에 대해 하나의 인스턴스가 있습니다 .... dll의 다른 이름은 너무 .... 공유 객체, 그게 전부 요점입니다. 이러한 DLL 년대의 대부분은 표준 및 혼자가, 바로 그 이유는 왜 특정 기능을 동적과 해당 DLL에서 사용

http://en.wikipedia.org/wiki/Dynamic_link_library

-1

만 기능, 메모리를 경련에 대해 걱정하지 마십시오, 필요 귀하의 코드를 사용하여, 전체 dll로드되지 않습니다.

호프가 도움이 되었으면 안녕하세요, 탐.

1

DLL을 "로드"할 때 걱정할 필요가 없습니다. 실제로는 매핑 된 메모리 파일입니다. Windows OS는 페이지 폴트 메커니즘을 사용하여 요청시 페이지를 가져옵니다. 그래서 DLL의 작은 부분 만 사용한다면 실제로 모든 것을 잘못 처리하지는 않을 것입니다.