✅ 한 것들
- Cherno Game Engine Course
🎞️ Cherno Game Engine Course
Using Dynamic Libraries in C++
dynamic linking
- 런타임에 일어나는 linking
- 실행할 때 dll을 불러온다
- 정적인 동적 방식 : 실행할 때 어떤 dll의 어떤게 필요하단 걸 알고 있음
- 동적인 동적 방식 : 뭘 가져올 건진 모름, 아무튼 필요함.
- 대부분의 라이브러리는 헤더 하나로 여러 빌드 설정 대응해줌
정적인 동적 방식 실습
- 전 편에서 설정한 include 경로는 유지
- 속성 > 링커 > 입력 > glfw3dll.lib; 추가 (glfw3.dll과 같이 컴파일해야함)
- 실행하면 dll 탐색 실패하여 오류
- dll을 exe와 같은 곳에 두면 해결 (솔루션의 Debug 폴더)
- 경로 직접 지정도 가능. root 디렉토리는 기본 탐색.
DLL과 LIB의 관계
- DLL (Dynamic Link Library): 실행 시 로드되는 바이너리 코드
- Import Library (.lib) : dll 사용 시 링커에게 함수 정보 제공하는 stub 코드 모음
__declspec()
__declspec(dllexport) : dll 만들 때 "이 함수는 dll 외부에서 쓸 수 있다" 선언
__declspec(dllimport) : dll 쓸 때 "이 함수는 dll에서 가져올 거다" 선언
- declspec() 없어도 동작은 하는 이유 : 링커가 .lib 안의 stub 직접 보고 링킹 가능
LoadLibrary()는 GetProcAddress()로 함수 포인터 읽어오므로 declspec() 필요 없음