목록protobuf (3)
Coding Memo
C#에서 Protobuf를 사용할 때는 간단하게 nuget 패키지에 있는 Google.Protobuf만 설치하면 되지만, C++은 직접 헤더 및 라이브러리들을 추가해주어야 한다. 만약 선택한 protobuf 프로젝트의 cmake 폴더 내에 CMakeLists.txt 파일이 있다면 아래 방법을 이용하는 방법도 있다. (보통 구버전에 해당한다.) https://minttea25.tistory.com/127 Protobuf 프로젝트에 추가하기 (Windows, CMake) C#에서 Protobuf를 사용할 때는 간단하게 nuget 패키지에 있는 Google.Protobuf만 설치하면 되지만, C++은 직접 헤더 및 라이브러리들을 추가해주어야 한다. (C#이 굉장히 편했던 것이었다!!!!!!!!!!!!!!!!!..
C#에서 Protobuf를 사용할 때는 간단하게 nuget 패키지에 있는 Google.Protobuf만 설치하면 되지만, C++은 직접 헤더 및 라이브러리들을 추가해주어야 한다. (C#이 굉장히 편했던 것이었다!!!!!!!!!!!!!!!!!!!) 먼저 짚고 넘어가야 할 것은 프로토버퍼 특정 버전 이후에 릴리즈 된 프로젝트는 단순히 cmake로 솔루션을 생성하고 빌드하려고 하면 에러가 날 것이다. 이 경우 다음글을 참고하자. ( https://minttea25.tistory.com/128 ) (그 이전 버전은 cmake 폴더에 있는 CMakeLists.txt파일을 포함하고 있어서 하는 방법이 다소 간단하다.) (일단 확인해 본 것은 3.19까지는 가능한 것 같다.) 추가적으로 proto파일에 대한 outp..
구글에서 제공하는 프로토버퍼를 이용해 서버와 클라이언트간 패킷을 주고받는 시나리오를 계획했다. 서버와 클라이언트 간 전송 시에는 byte[]라는 배열로 주고 받게 되는데, 이 배열을 다시 어떤 객체로 파싱하는 과정이 필요하다. CustomBuffer (직접 직렬화한 버퍼)를 사용하였을 때는 버퍼의 헤더를 추가하여, 버퍼의 맨앞에 2바이트 타입을 추가하고 그 값으로 전체 패킷의 길이를 넣었고 두번째 2바이트 값으로 해당 패킷의 원래 객체 타입을 정의해서 넣었었다. 아래의 구조와 같이 직렬화하는 버퍼를 CustomBuffer라고 하겠다. 파싱할 때는, 처음 2바이트를 읽어서 단위 패킷의 범위를 정한다. 그 다음으로 2바이트를 읽어서 Body에 있는 데이터를 어떤 객체로 역직렬화할 건지 알아낸다. 마지막으로,..