DLL 지옥: 두 판 사이의 차이

내용 삭제됨 내용 추가됨
TedBot (토론 | 기여)
잔글 봇: 문자열 변경 (윈도 XP → 윈도우 XP)
잔글 봇: 문자열 변경 (윈도 2000 → 윈도우 2000)
 
7번째 줄:
 
== 문제점 ==
DLL을 사용하다 보면 많은 문제들에 마주치게 되는데, 이는 특히 시스템에 많은 프로그램을 설치한 후 제거한 상황이라면 더욱 두드러진다. 이중 가장 일반적이면서도 까다로웠던 문제는 시스템 DLL이 다른 버전의 DLL로 덮어 써져서, 일부 애플리케이션이 동작하지 않게 되는 경우였다. 마이크로소프트에서 'DLL 스탐핑(DLL Stomping)'이라고도 부르는 이러한 DLL 덮어쓰기 문제는 [[마이크로소프트 윈도우의 역사|윈도윈도우 2000]]을 통해 도입된 윈도 파일 보호(Windows File Protection, WFP)[https://web.archive.org/web/20060811234801/http://www.microsoft.com/whdc/winlogo/drvsign/wfp.mspx] 기능을 통해 대부분 해결되었다. WFP이 있기 전에는 다음과 같은 원인들 때문에 DLL 호환 관련 문제가 발생했었다:
 
* 의무적인 표준 DLL [[버전 관리]] 방식과 이름 짓기, [[파일 시스템]] 위치 스키마가 없었다는 점.
19번째 줄:
 
== 사례들 ==
DLL 지옥은 위에서 보는 것처럼 윈도윈도우 2000 이전에는 매우 일반적인 현상이었다. DLL 지옥의 주요 원인은 운영 체제에서 DLL 설치에 대해 어떠한 제한도 하지 않았다는 점이다. 운영 체제는 단지 애플리케이션 설치 프로그램이 항상 올바르게 동작하기를 바랐으며, 시스템 DLL을 덮어 쓰기 전에 DLL의 버전을 확인해야 하는 것도 설치 프로그램의 몫이었다. 애플리케이션의 설치를 단순화하는 표준 도구 프로그램들은 마이크로소프트와 기타 업체들에 의해 제공되었다. 마이크로소프트는 자사 로고의 사용 승인을 받길 원하는 소프트웨어 벤더들에게 먼저 표준 인스톨러를 사용하여 올바르게 동작하는 보증된 설치 프로그램을 만들 것을 요구하기도 하였다. DLL 설치에 대한 이러한 접근 방법은 그리 큰 해결책은 되지 못했으며, 사용자는 [[인터넷]]의 인기에 따라 올바른 설치 프로그램을 가지지 않는 애플리케이션을 접할 기회가 점점 더 많아져 갔다.
 
제임스 도널드(James Donald)는 자신의 [[2003년]]도 문서 〈공유 라이브러리의 개선된 이식성(Improved Portability of Shared Libraries)[https://web.archive.org/web/20070926130800/http://www.princeton.edu/~jdonald/research/shared_libraries/cs518_report.pdf]〉에서 DLL 지옥이 마이크로소프트 윈도우보다는 [[리눅스]]에서 더 심각하다고 주장하였다. 여러 [[리눅스 배포판]]들은 자신의 배포판에 맞춰 패키징되지 않은 [[컴퓨터 소프트웨어|소프트웨어]]의 [[라이브러리]]를 업데이트하는데 있어 문제를 앓고 있는데, 이는 일부 [[오픈 소스]] 라이브러리가 버전이 바뀜에 따라 [[API]]를 변경하는 경우도 있기 때문이다. 윈도 환경이 아닌 다른 곳에서는 이 문제를 [[의존성 지옥]]이라 부른다. 그러나 이것과 DLL 지옥을 혼동해서는 안 된다. DLL 지옥은 의존성 지옥의 한 형태일 뿐이다.