window 安裝 Protobuf


環境安裝

1:下載CMake 

2:打開VS Command Prompt

3:修改工作目錄到目標目錄

cd C:\Path\to

4:創建編譯完后 protobuf headers/libraries/binaries 將要安裝的文件夾

 C:\Path\to>mkdir install

5:確保 'cmake' 命令可用,(如果不可用確保 把它加入到 path 環境變量中)

set PATH=%PATH%;D:\Program Files\cmake-3.5.2-win32-x86\bin

6:確保Git命令可用(如果不可用,添加到到 path 環境變量)

set PATH=%PATH%;D:\Program Files\Git\cmd

源設置

下載 packages https://github.com/google/protobuf/releases

把protobuf 放入  C:\Path\to 目標

cd  C:\Path\to\protobuf\cmake

CMake 配置

參考: Visual Studio Generators

注意:64位請用對應的 64位VS命令行

1:創建一個 build 目錄,並且改變當前工作目錄到build

mkdir build & cd build

------創建Release配置

C:\Path\to\protobuf\cmake\build>mkdir release & cd release

C:\Path\to\protobuf\cmake\build\release>cmake -G "NMake Makefiles" ^
-DCMAKE_BUILD_TYPE=Release ^
-DCMAKE_INSTALL_PREFIX=../../../../install ^
../..

------創建Debug 配置

C:\Path\to\protobuf\cmake\build>mkdir debug & cd debug
C:\Path\to\protobuf\cmake\build\debug>cmake -G "NMake Makefiles" ^
-DCMAKE_BUILD_TYPE=Debug ^
-DCMAKE_INSTALL_PREFIX=../../../../install ^
../..

-----創建Visual Studio 解決方案文件

C:\Path\to\protobuf\cmake\build>mkdir solution & cd solution
C:\Path\to\protobuf\cmake\build\solution>cmake -G "Visual Studio 11 2012 Win64" ^

-DCMAKE_INSTALL_PREFIX=../../../../install ^
-Dprotobuf_BUILD_TESTS=OFF ^
../..

備注

Generates Visual Studio 11 (VS 2012) project files.

Visual Studio 11 2012 Win64  --Specify target platform x64.

Visual Studio 11 2012 ARM   --Specify target platform ARM.

Visual Studio 11 2012 <WinCE-SDK>  --Specify target platform matching a Windows CE SDK name.

Generates Visual Studio 12 (VS 2013) project files:

Visual Studio 12 2013 Win64  --Specify target platform x64.

Visual Studio 12 2013 ARM     --Specify target platform ARM.

 

Generates Visual Studio 14 (VS 2015) project files:

Visual Studio 11 2012 Win64  --Specify target platform x64.

Visual Studio 11 2012 ARM   --Specify target platform ARM.

Visual Studio 11 2012 <WinCE-SDK>  --Specify target platform matching a Windows CE SDK name.

編譯

To compile protobuf:

C:\Path\to\protobuf\cmake\build\release>nmake

或者

C:\Path\to\protobuf\cmake\build\debug>nmake

或者

VS:打開生成的.sln 文件 即可。

如果出現如下錯誤:

 

 

修改Platform Toolset 即可

 

安裝

To install protobuf to the specified *install* folder:

C:\Path\to\protobuf\cmake\build\release>nmake install

or

C:\Path\to\protobuf\cmake\build\debug>nmake install

 

或者編譯VS解決方案中的“INSTALL”。

如果出現編譯錯誤,嘗試用管理員權限打開VS重新試試

定義消息體

package tutorial;

message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }

  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }

  repeated PhoneNumber phone = 4;
}

message AddressBook {
  repeated Person person = 1;
}

編譯生成對應library

c++:(protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/addressbook.proto)

 

protoc -I=. --cpp_out=. HookMessage.proto

 

 生成對應的 .h 和.cpp 文件

 

c#:(protoc -I=$SRC_DIR --csharp_out=$DST_DIR $SRC_DIR/addressbook.proto)

生成.cs 文件

 

c++項目使用

1:添加protobuf頭文件:   protobuf下的Src (protobuf-3.0.0-beta-2\src)

 Property-->Configuration Properties-->c/c++-->General:Additional Include Directories

2:添加類庫文件 (上面build出來的類庫,如上例:C:\Path\to\protobuf\cmake\build\debug)

 Property-->Configuration Properties-->Linker-->General-->Additional Library Directories

 

 

在使用cpp文件頂部加上 

#pragma comment(lib, "libprotobufd.lib")
#pragma comment(lib, "libprotocd.lib")

build項目:

 

可能提示錯誤

該錯誤又由於 生成的類庫和當前的項目使用的是不一樣的 Runtime Library

修改如下配置即可: Property-->Configuration Properties-->c/c++-->Cide Generation-->Runtime Library(   Multi-threaded DLL (/MD)  |  Multi-threaded Debug (/MTd)  等)

 

C#項目使用

引用Google.Protobuf.dll        protobuf 源包中C#項目生成的DLL(需要打開項目自己編譯生成)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM