• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 298  文章 - 377  trackbacks - 0
            <2013年4月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            常用鏈接

            留言簿(34)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊

            收藏夾

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            @import url(http://m.shnenglu.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

            下載地址:https://github.com/google/protobuf

            1.編譯
            通過cmake生成sln文件來編譯
            用cmd命令 cd 到3.0.0-beta-4\cmake

            1
            2
            3
            mkdir build & cd build
            mkdir solutionx86 & cd solutionx86
            cmake -G "Visual Studio 14 2015" -DCMAKE_INSTALL_PREFIX=../../../../install ../.. -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_SHARED_LIBS=ON -DCMAKE_GENERATOR_TOOLSET=v140_xp

            如果要編譯64位的話

            1
            cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=../../../../install ../.. -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_SHARED_LIBS=ON -DCMAKE_GENERATOR_TOOLSET=v140_xp

            注意中間不能有回車之類的,該命令行生成的是dll版本的(靜態庫的話要注意lib的運行庫),其它版本請查考cmake目錄下面的README.md

             

            2.hello world

            將examples目錄下滿的addressbook.proto,拷貝到生成的protoc.exe目錄下面,cd到該目錄

            protoc --cpp_out=./ addressbook.proto

            這樣就會生成addressbook.pb.cc , addressbook.pb.h  兩個文件,包含到你的項目中

            addressbook.pb.cc,需要取消預編譯頭或者手動加入#include "stdafx.h"

            然后包含頭文件和lib文件

            直接用examples目錄下面的 add_person.cc里面的代碼測試即可

             

            注意:使用dll的時候需要定義宏PROTOBUF_USE_DLLS,小心不要將這個PROTOBUF_USE_DLLS定義在stdafx.h里面,然后你又取消了預編譯頭!


            @import url(http://m.shnenglu.com/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);

            需要工具:

            1. visual studio 2015 

            2. cmake

            3.Git[可選]


            安裝完畢,繼續



            從官網下載protobuf :https://github.com/google/protobuf/releases/tag/v3.0.0



            window編譯protobuf有兩種方式:一個使用vs自帶的msvc(環境測試vs開發者命令行工具),一種是用Cygwin 或者 MinGW。

            此處使用msvc 進行編譯。


            使用vs開發者命令行工具,先測試cmake是否可用。


            打開上圖第一項,測試:



            ok,接下來,解壓protobuf壓縮包,在和protobuf同級目錄下新建一個install文件夾,用作編譯完成后方include ,lib等文件。

            如:

            [html] view plain copy
            1. C:\Path\to\install  


            進入protobuf目錄,創建build目錄

            [cpp] view plain copy
            1. C:\Path\to\protobuf\cmake>mkdir build & cd build  
            2. C:\Path\to\protobuf\cmake\build>  


            以下注意^和命令之間的空格

            創建release版本的編譯目錄:

            [cpp] view plain copy
            1. C:\Path\to\protobuf\cmake\build>mkdir release & cd release  
            2. C:\Path\to\protobuf\cmake\build\release>cmake -G "NMake Makefiles" ^  
            3. -DCMAKE_BUILD_TYPE=Release ^  
            4. -DCMAKE_INSTALL_PREFIX=../../../../install ^  
            5. ../..  

            創建debug版本的編譯目錄:

            [cpp] view plain copy
            1. C:\Path\to\protobuf\cmake\build>mkdir debug & cd debug  
            2. C:\Path\to\protobuf\cmake\build\debug>cmake -G "NMake Makefiles" ^  
            3. -DCMAKE_BUILD_TYPE=Debug ^  
            4. -DCMAKE_INSTALL_PREFIX=../../../../install ^  
            5. ../..  


            創建生成visual stuido 工程的文件夾:

            這一步需要注意的是,

            [cpp] view plain copy
            1. "Visual Studio 14 2015 Win64"  
            [cpp] view plain copy
            1. 是因為安裝了visual studio 2015而決定的,這是所謂的generator,不同編譯器是不同的,具體類型可見:<span style="white-space:pre">   http://www.cmake.org/cmake/help/latest/manual/cmake-generators.7.html#visual-studio-generators</span>  

            [cpp] view plain copy
            1. C:\Path\to\protobuf\cmake\build>mkdir solution & cd solution  
            2. C:\Path\to\protobuf\cmake\build\solution>cmake -G "Visual Studio 14 2015 Win64" ^  
            3. -DCMAKE_INSTALL_PREFIX=../../../../install ^  
            4. ../..  

            注意:這里用了Win64 那么生成的就是64位庫,想要32位庫就去掉Win64


            以上3種不是必須都做。


            通過以上3個步驟,可以見到在不同目錄都生成了相應的makefile文件,接下來是執行nmake進行編譯:

            [cpp] view plain copy
            1. To compile protobuf:  
            2.   
            3.      C:\Path\to\protobuf\cmake\build\release>nmake  
            4.   
            5. or  
            6.   
            7.      C:\Path\to\protobuf\cmake\build\debug>nmake  


            以下安裝頭文件、庫文件等安裝到之前制定的文件(install):

            [cpp] view plain copy
            1. To install protobuf to the specified *install* folder:  
            2.   
            3.      C:\Path\to\protobuf\cmake\build\release>nmake install  
            4.   
            5. or  
            6.   
            7.      C:\Path\to\protobuf\cmake\build\debug>nmake install  


            到此,release 和 debug版本都編譯成功,vs可以使用了。

            -----------------------------------------------------------------------------------------------------------------------------------------------------------------


            vs平臺開發用sln生成庫要注意兩點:

            第一:

            solution目錄下有生成sln文件,可以用vs打開生成庫,但要注意位數,比如如果


            vs + qt (32位庫)

            那么,protobuf也應該改成win32平臺,講所有項目都改成win32平臺的,




            不然會出現: fatal error LNK1112: module machine type 'X86' conflicts with target machine type 'x64'

            另外,32位編譯器可以編譯32和64位程序,這里選用win32



            第二:


            編譯的庫要和你使用的版本一致,如release debug,在下圖的位置確定;



            MD代表動態鏈接,MT代表靜態鏈接,后面沒有有d代表是release模式-》


            release模式則用前兩種。


            同時,如果你在項目用到其他庫,比如vs  + qt (32位動態鏈接庫),那么protobuf也應該用動態鏈接方式生成lib,不然提示:

            值“MT_StaticRelease”不匹配值“MD_DynamicRelease”

            等這類錯誤。


            動態鏈接方式:MD

            靜態鏈接方式:MT


            總之,qt 庫鏈接方式要和protobuf的一致,如果還用到其他的,全部都要一致。




            cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../../../../install ../.. -Dprotobuf_BUILD_TESTS=OFF

            cmake -G "NMake Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../../../../installDebug ../.. -Dprotobuf_BUILD_TESTS=OFF



            cmake -G "Visual Studio 14 2015" -DCMAKE_INSTALL_PREFIX=../../../../install ../.. -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_BUILD_SHARED_LIBS=ON -DCMAKE_GENERATOR_TOOLSET=v140_xp  



            cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=../../../../install ../..  


            cmake -G "Visual Studio 14 2015" -DCMAKE_INSTALL_PREFIX=../../../../install ../..  -Dprotobuf_BUILD_TESTS=OFF

            posted on 2017-08-02 23:17 聶文龍 閱讀(1725) 評論(0)  編輯 收藏 引用
            热久久视久久精品18| 久久精品视屏| 久久精品一区二区| 久久无码国产专区精品| 久久中文精品无码中文字幕| 人人狠狠综合久久亚洲高清| 久久久久国产精品嫩草影院 | 久久久亚洲欧洲日产国码aⅴ| 久久这里只精品99re66| 久久精品国产亚洲Aⅴ香蕉 | 久久人人爽人人爽人人片av麻烦 | 久久w5ww成w人免费| 无码精品久久久天天影视| 色8久久人人97超碰香蕉987| 久久成人国产精品| 国产精品9999久久久久| 久久精品中文字幕有码| 精品久久久久国产免费| 亚洲日本va中文字幕久久| 久久国产精品-国产精品| 久久精品九九亚洲精品天堂| 91精品无码久久久久久五月天| 欧美激情精品久久久久久久| 亚洲欧洲久久久精品| 国产精品一久久香蕉产线看| 国产激情久久久久影院| 久久亚洲精品成人无码网站| 亚洲色大成网站www久久九| 国产精品美女久久久久网| 久久亚洲中文字幕精品一区四 | 久久精品午夜一区二区福利| 狠狠色丁香婷综合久久| 久久久久久国产a免费观看不卡| 波多野结衣久久精品| 99精品国产在热久久| 亚洲欧美另类日本久久国产真实乱对白| 亚洲色婷婷综合久久| 欧美精品丝袜久久久中文字幕 | 国内精品人妻无码久久久影院| 久久精品国产国产精品四凭| 性做久久久久久久|