2013-04-11 1 views
1

나는 정적 및 런타임 dll 링크를 모두 구현하는 방법을 알고 있지만 정적 dll 연결에 dll의 LIB (정적 라이브러리)가 필요한 이유에 대해 더 관심이 있습니까? 일반적으로 LIB는 주목할 만하지만 코드의 컨테이너 (메서드 구현)이지만 정적 DLL 연결과 런타임 DLL 연결 (LoadLibrary, GetProcAddress ...)을 비교하면 LIB가 DLL 프로 시저 주소를 가져 오는 데 사용된다는 인상을받습니다. 어쩌면 완전히 틀렸어. 모르겠다.C++ 정적 DLL 링크에서 LIB를 사용하는 이유는 무엇입니까?

+0

http://en.wikipedia.org/wiki/Dynamic-link_library#Import_libraries –

+4

당신이 옳습니다. 정적 라이브러리를 사용하면 LIB 파일에 코드가 포함됩니다. 동적 라이브러리 (DLL)를 사용하면 LIB 파일에는 링커에서 DLL의 함수를 찾는 데 필요한 정보 만 포함됩니다. –

+0

Thx. 그것이 내가 알고 싶었던 것입니다. – Tracer

답변

0

DLL과 함께 제공되는 LIB 라이브러리에는 DLL의 코드로 작성한 코드를 "연결"하는 "스텁"이 포함되어있다. 일반적으로 공유 라이브러리의 실제 코드에 대한 "점프 명령"일뿐입니다. 또한 실제 공유 라이브러리에 대한 참조가 포함되어 있으므로 실행 파일을 메모리로 가져 오는 로더가 해당 시점에 관련 공유 라이브러리를로드 할 수 있습니다.

공유 라이브러리를 사용하기 위해 런타임 연결을 사용할 때 코드는 라이브러리를로드하고 공유 라이브러리의 어떤 기능이 사용되는지 확인해야합니다.

관련 문제