게임 프로그래밍(학습 내용 정리)/시스템 프로그래밍
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