WinCNT

Dynamic-Link Library(DLL) - 추가 사항 본문

게임 프로그래밍(학습 내용 정리)/시스템 프로그래밍

Dynamic-Link Library(DLL) - 추가 사항

WinCNT_SSS 2022. 6. 7. 12:45

프로세스와 DLL

코드와 데이터를 분리해서 생각하자

  • DLL  만들기(.dll)
    • 무엇을 제공할 것인가
      • {코드데이터} dll은 보통 코드(함수)의 제공이 목적이다
    • 무엇을 사용할 것인가
  • DLL 사용하기(.exe)

키워드

심볼 - 링커 입장에서 바라보는 이름이 심볼

심볼릭 obj파일에 포함에 들어있다

링커는 여러 obj, lib, dll에 있는 글로벌 변수, 스태틱 변수, 함수 이름(심볼)을 가져온다

심볼이 된 것들은 바이너리 파일(exe 등)에 포함되어 있다

dll의 심볼(함수)를 사용하는 방법은 2가지가 존재한다

1. 암시적(로드 타임)

2. 명시적(런 타임)

DLL 파일의 이미지( = 내용물)는 어플리케이션이 DLL 파일 내에 포함된 함수를 호출하기 전에

반드시 프로세스의 주소 공간에 매핑되어 있어야 한다

Template 코드

C++의 Template는 특수하다

 

예를 들어 STL을 include했지만 사용하지 않는다면

컴파일 에러도 발생하지 않고 실행 파일에 코드도 추가되지 않는다

즉, 심볼릭의 개수가 0개이기 때문에 DLL에 포함이 되지 않는다

 

SSS