DLL 너는 뭐냐 대체
가끔 만나게 되는 *.dll 파일들 *.exe나 *.txt 는 이해하는데 아무런 아이콘도 없고 하얀색 도화지 모양에 *.dll은 중요한 것같기도 하고 뭔가 건드리면 안될 것 같은 녀석이다.
10년이 넘는 시간을 외면하다가, 드디어 오늘 큰맘먹고 너의 정체를 조금이나마 이해해보려고 해본다.
DLL은 동적 링크 라이브러리의 약자이다.
Dynamic-link library(음… 우연인지는 모르겠지만 한글을 약어로 해도 DLL이구나.)
오케이 마지막 단어, 라이브러리가 나의 이해를 좀 돕는구나, 파이썬에서 주구장창 import 해오는 그런 개발자들의 편의를 위한 라이브러리 뭐 그런거란거지?
그럼 그 라이브러리 안에는 다양한 함수들이나 클래스가 있겠군. 우연인지 필연인지 방금전에 다뤘던 COM을 담는 그릇의 역할도 한다고 하는군.
지금 부터 설명할 내용은 전혀 알지못하고 적는 것임을.
위키백과에 보니까 사용하는 방법은 두가지가 있대.
- Implicit Linking:
이 방법은 실행 파일 자체에 X라는 DLL의 Y라는 함수를 사용하겠다는 정보 Z를 포함시킨뒤에 운영체제가 프로그램 실행시 Z(X->Y)를 초기화 하여 이용하는 방식 - Explicit Linking:
이 방법은 프로그램이 실행 중인 동안 API를 이용해서 DLL파일이 있는지 검사한 뒤에 동적으로 원하는 함수만 불러와서 쓰는 방법
일단 알못 정보들을 잔뜩 풀어놨으니 뇌를 좀 쉬게 만들기 위해서 같이 영상을 시청하도록 하자.
이 영상에서 제가 본 것은 겨우 3분 뿐입니다.
비록 영어로 되어 있지만 친절한 그림과 몇가지 알아들을 수 있었던 정보를 가지고 내 미숙한 한국말로 풀어보겠다.
DLL은 마치 브루드워와 같다. EXE 프로그램, 즉 스타크래프트 오리지널에는 확장 함수에 해당하는 메딕, 다크템플러, 러커가 없다. 그런데 이러한 유닛들을 오리지널에 이어서 확장 시킬 수 있게 만든 확장팩이 브루드워, 즉 오리지날 exe가 dll을 동적으로 불러와서 메딕 다크템플러 러커를 사용할 수 있게 해주는 것이다!!!!! (…라고 말하지만 실제로 브루드워가 dll을 사용하는 지는 알지 못합니다.)
그리고 그 방법이 implicit과 explicit, 즉 내재적, 외재적인 방식인거고, api로 외부로 나가서 데려오면 explicit인거고, 첨부터 exe가 실행하면 내재적인거다 이말씀.
근데 코드몽키 파이써너로써 알아 둘 부분은 아무래도 이녀석은 C, C++, 비주얼 베이직으로 코드쓰는 사람들이 친하다~ 라는 것인듯. 만약 당신이 나처럼 COM 을 python으로 컨트롤한다면 가끔 한번쯤은 접해볼 수 도 있을 개념인 듯 하다.
아무런 내용없는 글 읽어주셔서 감사합니다
제 글의 특징은 나무 위키와 유튜브를 적절히 혼합하여 마치 새로운 정보인냥 포장하는데 있습니다. 원본을 보시길 권장합니다.