1.获取源码:位于github上

电脑装有git的直接克隆,未装git下载压缩包也可以
git clone  https://github.com/grpc/grpc.git
cd grpc
git submodule update --init  这条命令在我电脑上不起作用,我采用的办法是,对着grpc文件夹点击鼠标右键,选择
【tortoiseGit】->选择【更新子模块】,如果没有安装Git可以点开github上grpc\third_party目录,可以看到grpc外部链接的子模块的地址,一个个下载即可
 
2.下载依赖包:opensll 和zlib
个人习惯用vs,那我们开始编译,编译之前需要下载nuget,要下载windows的.exe后缀,网上大多说的都是结合vs的,是错误的,地址:https://dist.nuget.org/index.html,不需要安装,将该文件至于环境变量目录下,即可执行nuget命令,用于依赖包的网络下载。主要是依赖于openssl和zlib库。

1:cd grpc   cd vsprojects

2:nuget restore grpc.sln,在vs命令行窗口执行这句,dos窗口我没试过,不知道是否也可以

3.下载gmock

cd grpc\third_party\protobuf

下载gmock: git clone -b release-1.7.0 https://github.com/google/googlemock.git gmock

cd gmock :git clone -b release-1.7.0 https://github.com/google/googletest.git gtest

上述两个包下载如果没有安装git,直接去下载压缩包

4.下载界面版的cmake

由于probuf没有.sln文件,我下载了界面版cmake,个人认为界面版的cmake不要安装,还比命令行好用,cmake中选择vs std 14 2015即可,后面讲下使用cmake时指定的两个目录:资源目录为有CMakeList的目录,即:third_party\protobuf\cmake,生成sln的目录:grpc\third_party\protobuf\cmake\build\solution,为什么是这个目录呢?

因为后面grpc会用你编译的库,你指定这个目录就不用修改【附加库目录】了,如果你生成库为debug版本,后面多个d,则去掉

5.开始编译protobuf,

打开sln,用vs2015编译即可,这个应该是非常顺利的,不会有什么错误,生成的debug库最好去掉‘d’,比如:libprotobufd.lib改为libprotobuf.lib

6.开始编译grpc和grpc插件

cd grpc\vsprojects 打开工程既可,编译即可

我只遇到了个错误:error1189,在【预处理器】定义中添加_WIN32_WINNT=0x600,如果报什么链接错误就简单了,大家可以自行查出缺少了哪些库,如果你搞不清库应该放在哪个路径,你可以直接指定库的目录,最后有个关于grpc++dll的子项目没有通过,不用管,因为我们要用的是grpc和grpc++

7.集成

建议大家先采用官方的实例集成,目录:grpc\examples\protos,生成c++文件
官方说明:http://doc.oschina.net/grpc?t=57966
生成命令:在dos里执行即可
$protoc -I ../../protos --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` ../../protos/route_guide.proto
$protoc -I ../../protos --cpp_out=. ../../protos/route_guide.proto
为什么要采用官方的例子,请看下面说明:
这里我遇到个大坑,java同事把的proto文件发给我,我直接用,怎么集成都有编译错误,注意这里是编译错误,我开始怀疑上面我做错了哪一步,后来把他的proto里的代码拷贝到官方的route_guide.proto,调成和官方一样的格式,比如空格等,后来集成成功,因为这个问题,我反复编译了好几次
grpc等等,浪费了大量时间
如果集成遇到了链接错误:则将对应的库强制包含里面,
include:
libs:
zlib和ssl的库我是通过nuget下的教程,https://www.nuget.org/packages/openssl/
方法一:在VS中用nuget控制台执行命令即可,这个网上有大量教程,简单易用,方法二:你可以自己cmake或者下载
集成demo如下:我的demo有几层命令空间,如果不好理解,请大家参照上面官方的示例

vs2015编译使用GRPC的更多相关文章

  1. grpc vs2015编译

    获取gRPC源码 gRPC是开源框架,项目代码在github上,所以首先要安装github.github安装后,在指定文件夹中,执行git命令就可以获取gRPC的所有源码. git clone  ht ...

  2. VS2015编译boost1.62

    VS2015编译boost1.62 Boost库是一个可移植.提供源代码的C++库,作为标准库的后备,是C++标准化进程的开发引擎之一. Boost库由C++标准委员会库工作组成员发起,其中有些内容有 ...

  3. VS2015编译Qt5.7.0生成支持XP的静态库(很不错)

    一.编译工具 1.VS2015 编译Qt5.7.0的所需VS版本:Visual Studio 2013 (Update1)或Visual Studio 2015 (Update2).因为Update补 ...

  4. Win7 下用 VS2015 编译最新 openssl(1.0.2j)包含32、64位debug和release版本的dll、lib(8个版本)

    Win7 64位系统下通过VS2015编译好的最新的OpenSSL(1.0.2j)所有八个版本的链接库, 包含以下八个版本: 1.32位.debug版LIB: 2.32位.release版LIB: 3 ...

  5. 用VS2015编译sqlcipher

    简介 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌 ...

  6. 实践详细篇-Windows下使用VS2015编译的Caffe训练mnist数据集

    上一篇记录的是学习caffe前的环境准备以及如何创建好自己需要的caffe版本.这一篇记录的是如何使用编译好的caffe做训练mnist数据集,步骤编号延用上一篇 <实践详细篇-Windows下 ...

  7. VS2015编译FFMPEG,修改FFmpeg缓冲区大小解决实时流解码丢包问题,FFmpeg错误rtsp流地址卡死的问题,设置超时

    之前尝试过很多网上利用Windows编译FFmpeg的文章,都没有办法编译X64位的FFmpeg,有些教程中有专门提到编译64位的FFmpeg需要下载mingw-w64-install,但是编译的过程 ...

  8. vs2015编译caffe

    有些时候,需要在python3的环境下import caffe,需要用vs2015在python3的环境下,编译pycaffe. microsoft的windows版本的caffe,依赖的库Nuget ...

  9. 使用VS2015编译xlslib库

    环境: win7_x64,VS2015 开始: 一.下载xlslib库 xlslib-package-2.5.0.zip 解压到一个指定目录,如E:\library\xlslib-package-2. ...

随机推荐

  1. 人脸Pose检测:ASM、AAM、CLM总结

    人脸的Pose检测可以使用基于位置约束的特征点的方法.人脸特征点定位的目的是在人脸检测的基础上,进一步确定脸部特征点(眼睛.眉毛.鼻子.嘴巴.脸部外轮廓)的位置.定位算法的基本思路是:人脸的纹理特征和 ...

  2. 在MFC中使用Cstring

    此文介绍了关于MFC使用CString的资料,可一参考一下. 转自于VC知识库:http://www.vckbase.com/index.php/wv/829 通过阅读本文你可以学习如何有效地使用 C ...

  3. HDU_1269_tarjan求强连通分量

    迷宫城堡 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  4. 为什么使用dispatch_sync

    1.充分利用多线程的性能: 2.将分散在多线程中的核心操作归并到一个queue执行(通常为一个串行队列). 3.便于在任务线程中进行后继操作. 术语: 任务线程: 同步模块.

  5. sql 排序

    select count(*) from vote group by contents PERCENT * from vote order by contents)as A group by cont ...

  6. Apex语言(四)选择(决策)结构

    1.选择结构 选择结构是当满足某个条件或不满足某个条件时,需要进行决策以控制执行的流程. 2.if语句 if语句由布尔表达式后跟一个或多个语句组成. [格式] if(条件表达式){ 语句: } [流程 ...

  7. JAVA中浅复制与深复制

    1.浅复制与深复制概念⑴浅复制(浅克隆)被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象.换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. ⑵深复 ...

  8. PAT_A1113#Integer Set Partition

    Source: PAT A1113 Integer Set Partition (25 分) Description: Given a set of N (>) positive integer ...

  9. 【剑指Offer】28、数组中出现次数超过一半的数字

      题目描述:   数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.   例如:输入如下所示的一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过 ...

  10. [bzoj3507 Cqoi2014]通配符匹配 (hash+DP)

    传送门 Solution 显然用哈希233 设\(f[i][j]\)表示第i个通配符和当前第j个字符是否匹配 考虑两种通配符的特性,直接转移即可 Code #include <cstdio> ...