Jay
3 min readFeb 1, 2019

DLL 너는 뭐냐 대체

가끔 만나게 되는 *.dll 파일들 *.exe나 *.txt 는 이해하는데 아무런 아이콘도 없고 하얀색 도화지 모양에 *.dll은 중요한 것같기도 하고 뭔가 건드리면 안될 것 같은 녀석이다.

10년이 넘는 시간을 외면하다가, 드디어 오늘 큰맘먹고 너의 정체를 조금이나마 이해해보려고 해본다.

DLL은 동적 링크 라이브러리의 약자이다.

Dynamic-link library(음… 우연인지는 모르겠지만 한글을 약어로 해도 DLL이구나.)

오케이 마지막 단어, 라이브러리가 나의 이해를 좀 돕는구나, 파이썬에서 주구장창 import 해오는 그런 개발자들의 편의를 위한 라이브러리 뭐 그런거란거지?

그럼 그 라이브러리 안에는 다양한 함수들이나 클래스가 있겠군. 우연인지 필연인지 방금전에 다뤘던 COM을 담는 그릇의 역할도 한다고 하는군.

지금 부터 설명할 내용은 전혀 알지못하고 적는 것임을.

위키백과에 보니까 사용하는 방법은 두가지가 있대.

  1. Implicit Linking:
    이 방법은 실행 파일 자체에 X라는 DLL의 Y라는 함수를 사용하겠다는 정보 Z를 포함시킨뒤에 운영체제가 프로그램 실행시 Z(X->Y)를 초기화 하여 이용하는 방식
  2. Explicit Linking:
    이 방법은 프로그램이 실행 중인 동안 API를 이용해서 DLL파일이 있는지 검사한 뒤에 동적으로 원하는 함수만 불러와서 쓰는 방법

일단 알못 정보들을 잔뜩 풀어놨으니 뇌를 좀 쉬게 만들기 위해서 같이 영상을 시청하도록 하자.

이 영상에서 제가 본 것은 겨우 3분 뿐입니다.

비록 영어로 되어 있지만 친절한 그림과 몇가지 알아들을 수 있었던 정보를 가지고 내 미숙한 한국말로 풀어보겠다.

DLL은 마치 브루드워와 같다. EXE 프로그램, 즉 스타크래프트 오리지널에는 확장 함수에 해당하는 메딕, 다크템플러, 러커가 없다. 그런데 이러한 유닛들을 오리지널에 이어서 확장 시킬 수 있게 만든 확장팩이 브루드워, 즉 오리지날 exe가 dll을 동적으로 불러와서 메딕 다크템플러 러커를 사용할 수 있게 해주는 것이다!!!!! (…라고 말하지만 실제로 브루드워가 dll을 사용하는 지는 알지 못합니다.)

그리고 그 방법이 implicit과 explicit, 즉 내재적, 외재적인 방식인거고, api로 외부로 나가서 데려오면 explicit인거고, 첨부터 exe가 실행하면 내재적인거다 이말씀.

근데 코드몽키 파이써너로써 알아 둘 부분은 아무래도 이녀석은 C, C++, 비주얼 베이직으로 코드쓰는 사람들이 친하다~ 라는 것인듯. 만약 당신이 나처럼 COM 을 python으로 컨트롤한다면 가끔 한번쯤은 접해볼 수 도 있을 개념인 듯 하다.

아무런 내용없는 글 읽어주셔서 감사합니다

제 글의 특징은 나무 위키와 유튜브를 적절히 혼합하여 마치 새로운 정보인냥 포장하는데 있습니다. 원본을 보시길 권장합니다.

Jay
Jay

Written by Jay

Brain Neural Network : Where neuroscience meets machine learning

No responses yet