Windows下gRPC安裝小記


layout: post
title: “Windows下gRPC安裝小記”
subtitle: “在坑裏 再次打滾的經歷。。。”
date: “2016-07-12”
author: “cj”
tags:
proto3
protobuf
gRPC
windows
c++

搞定了 proto3後,開始搞 gRPC。又是一個巨坑。

從 github clone 項目之後,在 vsprojects 中打開 grpc.sln,編譯 gpr, gprc, gprc_unsecure, gprc++_unsecure 幾個項目,生成 lib 庫。因爲用不了 boringsll,只能用未加密的版本。期間小坑無數,每個項目配置都得是 Mt 或 Mtd。
再打開 grpc_protoc_plugin.sln,編譯 grpc_plugin_support, gprc_cpp_plugin 兩個項目。會生成 grpc_cpp_plugin.exe 文件,可以放在 protoc 的路徑下,並加到系統路徑中,方便使用。

搞定前提條件後,到 example/protos 文件夾中,先生成 protoc 的 pb:

protoc --cpp_out=. helloworld.proto

會生成helloworld.pb.h 和 helloworld.pb.cc兩個文件。

再使用 grpc 插件生成 gprc 的 pb:

protoc --grpc_out=. --plugin=protoc-gen-grpc="your-grpc-cpp-plugin-exe-path" helloworld.proto

生成 helloworld.grpc.pb.h 和 helloworld.grpc.pb.cc 兩個文件。

將上述4個文件添加到新建的示例工程中,在工程屬性的 c/c++ Additional Include Directories 中添加 protobuf3庫中的 src 文件夾路徑和 grpc 庫中 include 文件夾路徑。在 Additional Library Directories 中添加 protobuf 和 grpc 中 vsprojects 的輸出路徑,或 debug 或 release 。在 Linker->Input 的 Additional Dependencies 中添加如下 lib 庫:

libprotobuf.lib
z.lib
gpr.lib
grpc_unsecure.lib
grpc++_unsecure.lib

編譯,我去又是一堆鏈接錯誤。不怕!至少說明代碼沒問題就是配置的事(廢話,Google 的示例代碼有什麼問題)。分析示例項目的鏈接錯誤,一般都是 unresolved external symbol,意思就是頭文件裏有聲明,但找不到實現。按照我上一篇配置 proto3的經驗,繼續找沒加到工程中的 c 或 cc 文件。

這些都搞定後,還有兩個坑。。。
一個是示例項目的屬性必須設置爲 Mtd 或 Mt,一個是如果項目使用了預編譯頭,要在生成的 pb.cc 文件的第一行非註釋行添加

#include "stdafx.h"

OK,我什麼大風大浪沒見過,美國的華萊士,我跟他談笑風生啊!這點小困難怎麼能難住我咧!繼續研究另一個示例項目 route_guid 去也。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章