Library2016. 12. 7. 16:43

C++ 과 유니티 를 연동해서 사용하려면 먼저 알아 두어야 할 것이 있다.

 

유니티는 C# 을 지원 하기 위해 MonoDevlop 을 사용 한다.

Unity 탑재된 MonoDevlop 버전은 2.6 이고 .Net 버전 3.5 와 매칭 된다.

 

이 말은 .Net 3.5 에서 지원하지 않는 것은 Unity 에서도 지원하지 못한다는 의미이다.

 

% 유니티를 사용 계획이 없는 C++, C# 간의 연동이라면 최상위 버전의 ProtoBuf 를 사용하면 된다.

적용 방법이 약간 다르지만 다운 받은 ProtoBuf 의 ReadMe 파일을 보면 빌드에 필요한 라이브러리, 빌드 방법이 친절히 설명 되어 있다.

 

사용한 Tool 은 Visual Studio 2010 이다.

 

Proto 파일을 *.h, *.cs 파일로 변환

 

C# 3.5 를 지원 하는 ProtoBuf 바이너를 다운 받는다. (https://code.google.com/archive/p/protobuf-net/downloads)

% 최상위의 protobuf-net r668.zip 버전을 받는다.

% 해당 버전은 서드파티에서 지원하는 것이고 해당 버전에서는 공식적으로 C#을 지원하지 않았다.

 

 

압축을 풀고

protobuf-csharp-port-master\src\ProtoGen 프로젝트를 빌드 한다.

protobuf-csharp-port-master\src\ProtocolBuffersLibrary.NET35.sln 을 열어서 빌드 한다.

 

protobuf-csharp-port-master\lib\protoc.exe 는 addressbook.proto 파일을 addressbook.pb.cc, addressbook.pb.h 로 변환 한다.

 

ProtoGen.exe 는 addressbook.proto 파일을 Addressbook.cs 로 변환 한다.

% Google.ProtocolBuffers.dll (ProtoGen 빌드 결과)

% ProtoGen.exe (ProtocolBuffersLibrary.NET35.sln  빌드 결과)

 

변환된 두 파일을 프로젝트에 포함 하여 사용 하면된다.

 

변환 명령 커맨드는 배치 파일로 만들어 다음과 같이 사용 하였다.

 

set CPP_DST_DIR=.\cpp
set CSHARP_DST_DIR=C:\Users\youngmoon\Desktop\PROTO-BUF\sample\protocol\csharp
set SRC_DIR=.\proto

 

protoc -I=%SRC_DIR% --cpp_out=%CPP_DST_DIR% %SRC_DIR%/addressbook.proto
ProtoGen.exe %SRC_DIR%/addressbook.proto -output_directory=%CSHARP_DST_DIR%

 

 

C# 프로젝트 연동

 

 

빌드 결과 는 protobuf-csharp-port-master\src\ProtocolBuffers\bin\NET35\ 에 생성된 Debug, Release 폴더 안에 있다.

 

신규 프로젝트를 생성하고 빌드된 DLL 을 사용하여 작업을 한다.

 

 

 

 

C++ 프로젝트 연동

 

C# 버전과 호환 되는 C++ 소스를 다운 로드 받는다.

 

https://github.com/google/protobuf/releases?after=v2.6.1 에서 protobuf-2.4.1.zip 를 다운 받는다.

 

압축을 풀고 protobuf-2.4.1\vsprojects\protobuf.sln 프로잭트를 연다.

libprotobuf 프로젝트를 빌드 한다. 빌드 할때 "일반 - 문자집합", "C/C++ - 코드생성 - 런타임 라이브러리" 속성을 맞춘다.

% 나는 멀티 바이트, MT, MDT 로 설정 하였다. 해당 라이브러리를 사용할 프로젝트에도 맞춰야 한다.

 

신규 프로 잭트를 생성하여 라이브러리 헤더 파일 경로를 맞추고 작업을 진행 한다.

 

 

 

 

 

Posted by 상현달