Server 솔루션 제작
ServerCore: 서버 핵심 기능을 작성하는 lib 파일
GameServer: 서버 로직
DummyClient: 클라 로직 (연습용)
lib vs. dll
구분 | Static Library (lib) | Dynamic Link Library (dll) |
링크 시점 | 컴파일/링크 시점에 프로그램에 통합됨 | 실행 시점에 프로그램과 동적으로 연결됨 |
파일 크기 | 실행 파일(exe)에 라이브러리가 포함되어 크기가 큼 | 실행 파일은 작고, dll 파일은 별로도 존재 |
메모리 사용 | 각 실행 파일이 별도의 복사본을 가짐 | 메모리를 공유해 여러 프로그램이 동일 dll 사용 가능 |
수정 및 업데이트 | 라이브러리를 수정하면, 다시 빌드 필요 | dll을 교체하면 재빌드 없이도 수정 가능 |
배포 | 단일 exe 파일로 배포 가능 | exe와 dll 파일 모두 배포 필요 |
호환성 | 플랫폼과 빌드 환경에 밀접하게 연관됨 | 플렛폼 간 유연성 존재 (인터페이스만 호환되면 됨) |
lib vs. dll - 그래서 뭘?
lib 사용
- 단일 실행 파일로 배포가 필요하거나 외부 의존성을 줄이고 싶을 때
- 라이브러리 코드가 자주 변경되지 않는 경우
dll 사용
- 여러 프로그램이 동일 라이브러리를 공유하거나, 기능 업데이트가 잦을 때
- 배포 및 유지보수 유연성을 중시할 때
CorePch를 제작하는 이유
ServerCore 프로젝트에 있는 pch 파일은
해당 프로젝트에서만 접근이 가능하다
외부 프로젝트에서 사용을 하기 위한 pch 파일인 CorePch 클래스 파일을 직접 제작한다
GameServer pch 제작 및 설정
GameServer 프로젝트에서 자제척으로 사용할
pch 클래스 파일을 생성하고 프로젝트 속성에서 아래의 설정을 해준다
또한, pch.cpp 파일의 속성에서 아래의 설정을 해준다
lib 파일 참조 방법
GameServer에서 ServerCore.lib의 CorePch.h를 참조하기 위해서는
GameServer 프로젝트 속성에서
아래와 같은 설정이 필요하다
포함 디렉토리는 참조할 lib가 있는 위치
라이브러리 디렉토리는 lib파일이 생성되는 위치이다
위와 같은 설정을 마치고
아래와 같이 pragma comment를 사용해서 나머지 위치를 지정해 주면
ServerCore lib파일의 CorePch.h를 참조할 수 있다
#pragma once
#ifdef _DEBUG
#pragma comment(lib, "Debug\\ServerCore.lib")
#else
#pragma comment(lib, "Release\\ServerCore.lib")
#endif
#include "CorePch.h"
DummyClient 및 GameServer 출력디렉토리 설정
여러 프로젝트의 출력 파일들을 한 곳으로 모이게 하기 위해서
각 프로젝트마다 아래와 같이
Binary 폴더에 모이도록 설정을 하면 편하다
pdb 파일
pdb 파일은 Program Database 파일의 약자이다
프로그램이 실행 중 크래시가 나는 경우
CrashDump가 발생하는데
CrashDump 파일은 메모리 상태만 담고 있다
그래서 pdb 파일을 통해 메모리 덤프를 분석해
어느 코드에서 문제가 발생했는지를 정확히 파악이 가능하다
즉, pdb 파일은 디버깅 심볼 정보를 포함하며,
크래시 덤프를 분석해 소스 코드의 문제 지점을 추적하는 데 사용되는 필수 파일이다
배포 시 pdb 파일은 보통 제외되지만,
디버깅을 위해 개발 환경에서는 반드시 함께 보관 및 사용해야 한다
'게임 서버' 카테고리의 다른 글
[게임서버 섹션2 Note] Lock 기초 (0) | 2024.12.28 |
---|---|
[게임서버 섹션2 Note] Atomic (0) | 2024.12.28 |
[게임서버 섹션2 Note] 스레드 생성 (0) | 2024.12.28 |
[게임서버 섹션2 Note] 멀티스레드 개론 (0) | 2024.12.28 |
[게임서버 섹션1 Note] 서버 개론 (0) | 2024.12.28 |