• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

클라이언트에 ServerCore를 복사 시, #include 안될 때

24.02.18 19:52 작성 24.02.18 20:20 수정 조회수 121

0

 

포트폴리오 작업하고 있는데,  

클라이언트를 PacketHandler까지 작업 완료된 서버랑 연동해보려고 합니다~

 

ClientServiceRef service = MakeShared<ClientService>(

NetAddress(L"127.0.0.1", 7777),

MakeShared<IocpCore>(),

MakeShared<ServerSession>, // TODO : SessionManager 등

1);

 

클라이언트쪽에서 위와 같은 코드로 서버와 연결하기 위해

ServerCore 라이브러리를 통쨰로 클라이언트쪽으로 가져와야 하는데...

 

비쥬얼 스튜디오 2022에서

파일 --> 추가 --> 기존 프로젝트 메뉴 이 기능으로 ServerCore 프로젝트를

클라이언트 솔루션에 복사 하고,

파일탐색기에서도 ServerCore 폴더를 클라이언트쪽에 통쨰로 옮겼는데도

#include가 안되고 있는데, 방법을 알 수 있을까요??

 

 

클라이언트 솔루션에 ServerCore 프로젝트 추가완료

 

 

GameProjcet .cpp소스에서 ServerCore 쪽 파일들 인클루드 시도했으나 에러발생

 

 

 

답변 1

답변을 작성해보세요.

0

ServerCore는 .lib이고 정적 라이브러리 (.lib)을 다른 프로젝트에 추가하는 것을
구글에 검색해보시고 따라해보세요.
그냥 #include를 하면 안 되고,
라이브러리 경로와 헤더 경로 두개를 다 잡아줘야 합니다.
강의에서 ServerCore와 Server의 관계처럼 말이죠.

이런저런 방법 다 시도해보다가

프로젝트 속성 --> 링커 --> 일반 --> 추가 라이브러리 디렉터리 --> C:\GameProject\PacketHandler\Libraries\ServerCore.lib

 

추가했더니 외부 프로젝트에서 #include와 빌드까지 성공했습니다

.lib파일안에 ServerCore의 .h와 .cpp들이 모두 포함되어 있어서 가능하게 된것일까요?

.lib파일 역할이 너무 궁금합니다

lib는 CPP가 빌드되어 결과로 만들어진 바이너리(실행) 파일에 가깝습니다.
단 독단적으로 실행될 수는 없고 다른 프로그램에 기생되어 실행되는
정적(static) 라이브러리입니다. 즉 실행파일(exe)의 라이브러리 버전이라고 생각하시면 됩니다.

.h의 시그니처 내용들이 포함되어 빌드된게 lib이니
말씀하신게 틀린 것은 아니지만 어찌됐건
정적으로 빌드하려면 헤더 파일들의 경로를 따로 알려주긴 해야 합니다.
자세한 내용은 C++ 컴파일러를 공부하지 않으면 어려운 내용이니 그냥 넘어가시는게 좋습니다.

 

헤더파일의 경로를 딴다는건

처음 헤더파일 추가시

C:\GameProject\PacketHandler\ServerCore\pch.h

또는

 

프로젝트 속성 --> C/C++ --> 일반 -->

추가포함 디렉토리 C:\GameProject\PacketHandler\ServerCore

 

이 2가지 방법중 하나로 진행하면 될까요?

강의에서 언급 해주시긴 했는데 어디있는지 찾지 못하고 있어 구글링으로 보고 있는데 올바른 방법인지 확인을 받고 싶습니다