1. 程式人生 > >【protobuf 002】 protobuf+vs2013編譯安裝

【protobuf 002】 protobuf+vs2013編譯安裝

轉載:http://blog.csdn.net/ec06cumt/article/details/47257539

protobuf的是google的一個強大的網路傳輸協議。

下面一個簡單的安裝使用。

1:下載:

protobuf-2.5.0-win.zip

protobuf-2.5.0,是protobuf的原始檔,protobuf-2.5.0-win.zip裡面是一個protoc.exe應用檔案,用於給傳輸類編譯成h和cc檔案。

如解壓protobuf-2.5.0-win.zip的目錄:

2:新增編譯環境變數,用於編譯成標頭檔案和CC檔案。

【我的電腦】->【屬性】->【高階系統設定】->【環境變數】->【系統變數】->【新建】變數名:PROTOBUF_HOME 變數值:E:\work_uu\protobuf\protoc-2.5.0-win32(上面protobuf-2.5.0-win.zip的解壓目錄)


在系統變數中找到Path的選項:在其中新增   ;%PROTOBUF_HOME%; 注意前後都有分號(;)

測試:開啟cmd,輸入protoc -h 正確有相應的提示,表示成功

3:編譯

(1):開啟protobuf-2.5.0的解壓檔案的vsprojects中工程檔案protobuf.sln

編譯:libprotobuf 有錯誤:

1>..\src\google\protobuf\io\zero_copy_stream_impl_lite.cc(121): error C3861: “min”:  找不到識別符號
1>..\src\google\protobuf\io\zero_copy_stream_impl_lite.cc(168): error C3861: “max”:  找不到識別符號
1>..\src\google\protobuf\io\zero_copy_stream_impl_lite.cc(195): error C3861: “min”:  找不到識別符號

則在檔案中新增:

#include <algorithm>標頭檔案

(2):修改vs2013的編譯強制copy檢查,若不修改,編譯物件檔案的時候,會報_Copy_Imp的錯誤

修改libprotobuf工程下的repeated_field.h檔案。

修改如下:

namespace internal {
template <typename Element, bool HasTrivialCopy>
void ElementCopier<Element, HasTrivialCopy>::operator()(
    Element to[], const Element from[], int array_size) {
std::copy(from, from + array_size, stdext::checked_array_iterator<Element*>(to, array_size));
  //std::copy(from, from + array_size, to);
}

最後一個一個編譯工程,生成libprotobuf.lib,libprotobuf-lite.lib,libprotoc.lib,lite-test.exe,protoc.exe,test_plugin.exe,tests.exe

注意:編譯的debug版本的lib,要對應工程的bebug版,要是工程師release,最好對已release版本的lib

4.新增測試工程檔案:

新建控制檯檔案testprotobuf.sln工程


新建protobuf_lib資料夾,把上面編譯的lib檔案copy到這個檔案下。

新建protobuf_src資料夾,把protobuf-2.5.0的原始檔下的src資料夾下的所有檔案copy到此資料夾下。

新建Person.proto檔案,

內容如下:

  1. package Test;  
  2. message Person   
  3. {  
  4.    required string name = 1;  
  5.    required int32 id = 2;  
  6.    optional string email = 3;  
  7. }  

開啟cmd

輸入命令:

protoc -I=E:\work\testProtobuf --cpp_out=E:\work\testProtobuf E:\work\testProtobuf\Person.proto

把相應的目錄換成.proto檔案所在的目錄即可

完成後會生成兩個檔案:

Person.pb.h

Person.pb.cc

然後新增到工程中。

5.新增原始檔的標頭檔案。


新增lib,【屬性】-【連結器】-【輸入】-【附加依賴項】把上面的三個lib新增進來

在包含lib所在的庫檔案:【屬性】-【連結器】-【常規】-【附加庫本目錄】:$(SolutionDir)\protobuf_lib

新增測試原始碼:

  1. #include "stdafx.h"
  2. #include "..\Person.pb.h"
  3. #include <iostream>
  4. #include <fstream>
  5. int _tmain(int argc, _TCHAR* argv[])  
  6. {  
  7.     GOOGLE_PROTOBUF_VERIFY_VERSION;  
  8.     Test::Person person;  
  9.     person.set_id(123);  
  10.     person.set_name("abc");  
  11.     person.set_email("[email protected]");  
  12.     std::cout << "Before:" << std::endl;  
  13.     std::cout << "ID:" << person.id() << std::endl;  
  14.     std::cout << "name:" << person.name() << std::endl;  
  15.     std::cout << "email:" << person.email() << std::endl;  
  16.     std::string str;  
  17.     person.SerializeToString(&str);  
  18.     Test::Person person2;  
  19.     person2.ParseFromString(str);  
  20.     std::cout << "After:" << std::endl;  
  21.     std::cout << "ID:" << person2.id() << std::endl;  
  22.     std::cout << "Name:" << person2.name() << std::endl;  
  23.     std::cout << "Email:" << person2.email() << std::endl;  
  24.     system("pause");  
  25.     return 0;  
  26. }  

結果如下:


相關推薦

protobuf 002 protobuf+vs2013編譯安裝

轉載:http://blog.csdn.net/ec06cumt/article/details/47257539 protobuf的是google的一個強大的網路傳輸協議。 下面一個簡單的安裝使用。 1:下載: protobuf-2.5.0-win.zip

MAC OS 下protobuf 2.6.1 版本編譯安裝及proto型別檔案編譯

由於工程中proto語法採用的是2.0的,所以選擇安裝2.6.1版本的protobuf。(3.0和2.0語法不同,如果安裝3.0以上版本的protobuf,在編譯的時候應該需要增加啥~~~) 編譯安裝步驟: 1. 安裝 protobuf 依賴項, 其依賴於autoconf、 a

LDAP安裝在已編譯安裝的PHP環境下安裝LDAP模組

在已編譯安裝的PHP環境下安裝LDAP模組 (其他模組也能以這個方式安裝) 1、在PHP原始碼包內找到ldap模組檔案 cd php-5.6.37 cd ext/ldap/ [attach]257[/attach] 2、phpize命令是用來準備 PHP 擴充套件庫的編譯環境 phpiz

工具/筆記ProtoBuf簡易教程(proto3)

ProtoBuf 3 ProtoBuf 如今Google官方的ProtoBuf已經出了ProtoBuf的C-sharp版本,使用proto3語言標準,使用庫檔案需要.Net4.x,需要在Unity的PlayerSettings中將.Net舊版本切換至4.x

Linux運維入門Linux環境編譯安裝、配置Mysql

安裝說明 系統環境:CentOS-7 64位最小模式 安裝軟體:mysql-5.1.57.tar.gz 下載地址:點我去下載mysql-5.1.57 上傳位置:/usr/local/soft

指導從原始碼編譯安裝Git-Ubuntu

1 下載原始碼包 2 編譯安裝Git 1)安裝編譯原始碼包的工具: $sudo apt-get installlibcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev 2)展開原始碼包,進入: $t

QT筆記QTCreator+VS2013在windows上的安裝與配置

新手QT比較笨,網上好多教程安裝起來很繁瑣,我搞了兩天裝的也是亂七八糟,最後找到一種簡便的方法,分享一下。 1、安裝VS2013,我選擇的是VS2013_RTM_PRO_CHS.iso,一路NEXT即可。 2、安裝QT Creator,我選擇的是qt-opensource-

CNMP系列CentOS7.0下安裝Nginx服務

系統資源 for proxy input strong network emc -c .com 話步前言,CNMP之路,系統起步:http://www.cnblogs.com/riverdubu/p/6425028.html 這回我來講解下CentOS7.0下如何安裝和配置

Linux基礎Fcitx中文輸入法安裝

sun 不顯示 命令 中文輸入 狀態 linu div 中括號 ron 一、安裝Fcitx 1. 安裝Fcitx所需組件 sudo apt install fcitx fcitx-tools fcitx-config* fcitx-frontend* fcitx-modu

MySQL數據庫學習第一篇數據庫安裝

極限 通過 處的 如果 rpm mongodb 其他 增強 初始配置 一、基礎部分 1.數據庫是什麽 之前所學,數據要永久保存,比如用戶註冊的用戶信息,都是保存於文件中,而文件只能存在於某一臺機器上。 如果我們不考慮從文件中讀取數據的效率問題,並且假設我們的程序所有的組件都

windows VS2013 編譯安裝QWT6.1

ubd cor text his gre ror div before eas 1. 下載QWT從官網 For getting a snapshot with all bugfixes for the latest 5.2 release: svn export svn:

IntelliJ IDEA在idea上安裝使用svn

ref 下載地址 target aid svn 下載 npr 技術分享 bsp 1、在電腦上安裝SVN 下載地址:64位SVN下載 然後一路next,安裝完成即可。 2. 【IntelliJ IDEA】在idea上安裝使用svn

Python爬蟲Requests庫的安裝

comm AS imp pypi pan span douban OS host 1.按照普通的pip不能行,說find不能 有位小傑控的大牛說了一句:換一個國內的更新源吧, pip install requests -i http://pypi.douban.com/si

深度學習ubuntu16.04下安裝opencv3.4.0

form 線程 ubunt con sudo ive tbb 依賴包 復制代碼 1、首先安裝一些編譯工具 # 安裝編譯工具 sudo apt-get install build-essential # 安裝依賴包 sudo apt-get install cmake

Python之路第一篇:使用miniconda安裝python多版本

ase alias linux 1.10 ade ror another 離開 cer 一、簡介 Anaconda是一個發行包,裏面集成打包了很多的軟件包,使用conda包管理器來安裝軟件,比較方便,但是Anaconda軟件包太大,個人不太喜歡,想自己定制。Minicond

Java學習Java簡介與安裝

        Java是一門面向物件程式語言,相對於C語言沒有指標這種讓人難以理解的東西,並且有自己的垃圾回收機制。相對於其他語言,本人感覺Java簡單易學並且功能強大。(當然,python寫起程式碼來更加簡單,不過

IDEA 二IntelliJ IDEA從安裝到使用的一些準備和外掛

https://www.w3cschool.cn/intellij_idea_doc/ idea官方文件 一、 IntelliJ IDEA安裝時需要選中需要的外掛的那一步,選中cvs等版本控制工具,不選用不了。 二、 IntelliJ IDEA自定義配

實驗三程式設計、編譯、連線、跟蹤

四、實驗結論     1.任務一:   (1) ①用edit命令開始編輯。 ②出現如圖介面,按下回車。 ③出現此介面,按下alt鍵,選單欄的每個單詞首字母會變成白色,在鍵盤上按F鍵,展開File欄。 ④出現如圖介面,按下N鍵,新建一個檔案。 ⑤用游

Docker系列認識ELK,docker安裝ELK和IK分詞器

1.ELK簡介 ELK是三個開源軟體的縮寫,分別表示:Elasticsearch , Logstash, Kibana , 它們都是開源軟體。新增了一個FileBeat,它是一個輕量級的日誌收集處理工具(Agent),Filebeat佔用資源少,適合於在各個伺服器上搜集日誌後傳輸給Logstash,官方也推

python3爬蟲Scrapy Win10下安裝與新建Scrapy專案

詳細安裝教程可參考: http://www.runoob.com/w3cnote/scrapy-detail.html https://segmentfault.com/a/1190000013178839 其他教程: https://oner-wv.gitbooks.io/sc