250921

lililllilillll·2025년 9월 21일

개발 일지

목록 보기
301/350

✅ 한 것들


  • 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() 필요 없음


profile
너 정말 **핵심**을 찔렀어

0개의 댓글