인증서버를 만들때는 vs가 아니라 vscode로 작업했기 때문에 Makefile로 빌드를 관리했었다. 그런데 비주얼스튜디오에서는 또 빌드 설정 방법이 다르니 환경설정부터 해보자.
게임서버 만들었던걸 그대로 만들면 되는데 강의 초반부분을 내가 기록을 제대로 안해놔서 우선 강의 영상을 다시 보면서 환경설정을 했다.
디렉토리 설정

우선 솔루션에 3개의 프로젝트 추가했다. 더미클라, 게임서버, 서버코어. 서버코어는 정적 라이브러리 프로젝트, 나머지는 콘솔앱.
프로젝트 폴더
Binary
DummyClient
GameServer
ServerCore
Libraries
Debug
Release
폴더를 추가해서 위와 같이 디렉토리 구성을 하자.



서버코어의 출력디렉토리 설정. 이러면 servercore를 빌드하면 해당경로에 라이브러리가 생성된다.
디버그로 설정해놔서 Libraries/Debug 에 생성된 모습이다.
pch
프레임워크 라는 파일이 있는데 한줄만 덜렁있으니 pch에 옮기고 제거
서버코어cpp도 제거
CorePch 클래스 추가
서버코어에서 사용하는 모든 파일에서 참조할 것들을 pch에 넣어주는건데, pch자체는 게임서버나 더미클라애서 못쓰니까 게임서버나 더미클라에서도 참조하고싶은걸 corepch에 따로 넣어줄 예정.
pch.h
#pragma once
#define WIN32_LEAN_AND_MEAN // 거의 사용되지 않는 내용을 Windows 헤더에서 제외합니다.
CorePch.h
여기저기서 많이 쓰일 헤더들을 여기 적어놓고, 각 프로젝트 pch 에서 include해서 쓴다.
#pragma once
#include "Types.h"
#include <vector>
#include <list>
#include <stack>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <iostream>
using namespace std;
pch.h
pch에 corepch 인클루드한다.
#pragma once
#define WIN32_LEAN_AND_MEAN // 거의 사용되지 않는 내용을 Windows 헤더에서 제외합니다.
#include "CorePch.h"
Types.h
#pragma once
using BYTE = unsigned char;
using int8 = __int8;
using int16 = __int16;
using int32 = __int32;
using int64 = __int64;
using uint8 = unsigned __int8;
using uint16 = unsigned __int16;
using uint32 = unsigned __int32;
using uint64 = unsigned __int64;
빌드 설정
CorePch.h와 cpp에 테스트용 HelloWorld 함수를 만들고 빌드를 해보자.
참고로 x64를 써야 메모리를 더 많이 쓸 수 있으니 서버에서는 굳이 86을 쓸 이유가 없다.

게임서버와 더미클라이언트에는 pch가 없다. 직접 만들어주자. pch.h 의 내용은 서버코어의 것을 그대로 복붙.
파일은 만들었지만 vs에서 이 파일을 pch로 사용중이진 않다. 그러니 프로젝트 속성에서 설정한다.
프로젝트 속성

pch.cpp 속성

DummyClient와 GameServer 둘 다 똑같이 해준다.
그런데 CorePch가 서버코어 프로젝트꺼라서 include가 안된다. 이 문제를 해결하자.

프로젝트 속성 - VC++ 디렉터리에서 포함 디렉터리와 라이브러리 디렉터리를 추가하면 된다. 그럼이제 include CorePch의 빨간줄은 없어진다.
포함 디렉터리


라이브러리 디렉터리


그런데 라이브러리파일은 저기에 Debug 나 Release 폴더 안에 들어가야 있기 때문에 추가적으로 설정해줘야한다.
더미클라와 게임서버 프로젝트의 pch.h 파일에 아래와같이 추가해주자.
#pragma once
#define WIN32_LEAN_AND_MEAN // 거의 사용되지 않는 내용을 Windows 헤더에서 제외합니다.
#ifdef _DEBUG
#pragma comment(lib, R"(Debug\ServerCore.lib)")
#else
#pragma comment(lib, R"(Release\ServerCore.lib)")
#endif
#include "CorePch.h"
pragme comment 부분은 MSVC 문법이고 표준이 아니라서 MSVC컴파일러에서만 동작한다.
의미는 "링커야 이 프로그램 빌드할 때 Debuf\ServerCore.lib 파일도 같이 묶어서 빌드해줘" 라고 컴파일러에게 전달하는 것. 전처리기 단계에서 실행된다고 한다.
lib말고도 다른 옵션들도 있다 한다. 지금은 lib만 알면 될듯.
아무튼 이렇게 설정을 해놓고 빌드를 해보면 잘 된다. 근데 게임서버와 더미클라이언트의 실행파일이 Binary에 들어가지 않고 다른데서 생긴다. 이것도 수정해주자.



이제 다시 빌드를 해보면 실행파일 Binary\Debug에 잘 생성이 된다.
현재까지의 파일들

현재까지의 디렉토리 구조
Binary
Debug
Release
DummyClient
GameServer
Libraries
Debug
Release
ServerCore
해당 게시글의 git 버전
GitHub - Dodontak/Project_Island_GameServer at e7fdaa77aedf5a524f4acf692d41083373526ce9
Contribute to Dodontak/Project_Island_GameServer development by creating an account on GitHub.
github.com
'프로젝트 > Project_Island' 카테고리의 다른 글
| 26. NetAddress (0) | 2026.03.27 |
|---|---|
| 25. SocketUtils (0) | 2026.03.26 |
| 23. 게임서버 만들기의 시작 (0) | 2026.03.24 |
| 나중에 인증서버에서 할 일 (0) | 2026.03.17 |
| 22. 인증서버 마무리 (0) | 2026.03.15 |