热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

vs2015编译使用GRPC

1.获取源码:位于github上电脑装有git的直接克隆,未装git下载压缩包也可以gitclonehttps:github.comgrpc

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有几层命令空间,如果不好理解,请大家参照上面官方的示例

over 赠送名言: 一个人害怕的时候还能够勇敢吗? 一个人唯有在害怕的时候才能够勇敢

推荐阅读
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文详细记录了 MIT 6.824 课程中 MapReduce 实验的开发过程,包括环境搭建、实验步骤和具体实现方法。 ... [详细]
  • 深入理解Java SE 8新特性:Lambda表达式与函数式编程
    本文作为‘Java SE 8新特性概览’系列的一部分,将详细探讨Lambda表达式。通过多种示例,我们将展示Lambda表达式的不同应用场景,并解释编译器如何处理这些表达式。 ... [详细]
  • 本文详细介绍了如何在ARM架构的目标设备上部署SSH服务端,包括必要的软件包下载、交叉编译过程以及最终的服务配置与测试。适合嵌入式开发人员和系统集成工程师参考。 ... [详细]
  • 实践指南:使用Express、Create React App与MongoDB搭建React开发环境
    本文详细介绍了如何利用Express、Create React App和MongoDB构建一个高效的React应用开发环境,旨在为开发者提供一套完整的解决方案,包括环境搭建、数据模拟及前后端交互。 ... [详细]
  • 本文将详细介绍如何在Android Studio中导入和编译OSChina Android 2.4版本的源码。包括所需软件、下载地址以及一些注意事项。 ... [详细]
  • Git命令基础应用指南
    本指南详细介绍了Git命令的基础应用,包括如何使用`git clone`从远程服务器克隆仓库(例如:`git clone [url/path/repository]`)以及如何克隆本地仓库(例如:`git clone [local/path/repository]`)。此外,还提供了常见的Git操作技巧,帮助开发者高效管理代码版本。 ... [详细]
  • SSL 错误:目标主机名与备用证书主题名称不匹配
    在使用 `git clone` 命令时,常见的 SSL 错误表现为:无法访问指定的 HTTPS 地址(如 `https://ip_or_domain/xxxx.git`),原因是目标主机名与备用证书主题名称不匹配。这通常是因为服务器的 SSL 证书配置不正确或客户端的证书验证设置有问题。建议检查服务器的 SSL 证书配置,确保其包含正确的主机名,并确认客户端的证书信任库已更新。此外,可以通过临时禁用 SSL 验证来排查问题,但请注意这会降低安全性。 ... [详细]
  • 本文详细介绍了在 Red Hat Linux 系统上安装 GCC 4.4.2 的步骤,包括必要的依赖库的安装及常见问题的解决方法。 ... [详细]
  • CRZ.im:一款极简的网址缩短服务及其安装指南
    本文介绍了一款名为CRZ.im的极简网址缩短服务,该服务采用PHP和SQLite开发,体积小巧,约10KB。本文还提供了详细的安装步骤,包括环境配置、域名解析及Nginx伪静态设置。 ... [详细]
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • 调试利器SSH隧道
    在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到 ... [详细]
  • 在OpenCV 3.1.0中实现SIFT与SURF特征检测
    本文介绍如何在OpenCV 3.1.0版本中通过Python 2.7环境使用SIFT和SURF算法进行图像特征点检测。由于这些高级功能在OpenCV 3.0.0及更高版本中被移至额外的contrib模块,因此需要特别处理才能正常使用。 ... [详细]
  • 使用 SourceTree 管理 SVN 代码仓库的详细指南
    SourceTree 是一款功能强大的 Git 管理工具,但很多人不知道它同样支持管理 SVN 代码仓库。本文将详细介绍如何使用 SourceTree 来管理和操作 SVN 代码仓库。 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
author-avatar
卢军好2602912493
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有