多彩网

windows+vs2017 C++编译gRPC

windows+vs2017 C++编译gRPC

ruyue 2024-12-29 设备制造 3 次浏览 0个评论
1、需求

因为项目需要,想要在windows+vs2017环境使用C++下编程gRPC并编写demo程序,使得能够根据proto文件生成对应的c++文件。

2、资料查阅

起初根据网络资料查阅,使用git从github中下载了gRPC最新的开源代码,并通过CMake编译,之后使用vs2017进行最终的编译生成,但在vs2017编译过程中,提示版本不匹配,需要vs2019及以上版本,本想进行vs的版本升级,但考虑到项目代码版本问题,最终选择低版本的gRPC进行编译与使用,再次查阅资料,最终,根据大佬的这篇文件

,完成了vs2017+gRPC1.48版本的编译。

3、编译工具

        (1)Git;用于从github中将代码拉下

        (2)CMake;编译gRPC

        (3)Nasm;似乎是编译过程中openssl用到,不太了解,但网上搜索下载了一个

        (4)VS2017 Professional;

4、编译步骤(就是把大佬的文章复制了一遍,为了防止大佬的文章链接失效)
        (1)下载gRPC源码

使用git命令行在预备存放grpc源码的目录下执行, 此处我们下载的是 grpc 1.48.0

 

进入源码目录

cd grpc

下载依赖库

git submodule update --init

*此处注意,确保所有依赖库下载成功

可以重复执行   git submodule update --init --recursive    命令,直到没有错误提示)。

        (2)使用CMake生成工程文件

在生成工程文件时做,做如下调整:

l 添加ABSL_PROPAGATE_CXX_STD选项,类型为bool设置为true;

l 将源码目录下third_partyzlibCMakeList.txt的第一行依赖的CMake版本修改为2.8.12;

l 添加CMAKE_INSTALL_PREFIX选项,类型为Path,设置为gRPC编译后的安装目录。

如下图所示:

点击【Configure】设置需要的编译环境,如下图所示:

点击【Finish】后配置环境日志中没有报错后,点击【Generate】生成工程文件。

        (3)编译、安装gRPC

使用管理员运行Visual Studio 2017,并打开上一步生成的工程grpc.sln。

将环境设置为Release x64生成ALL_BUILD项目。

生成INSTALL项目,此时会将生成的文件安装到第2步中CMAKE_INSTALL_PREFIX配置的路径中。

将安装目录下的bin目录路径添加到环境变量Path中,如下图所示:

至此,gRPC的c++环境已经配置好。

5、创建测试工程

大佬这里创建的C#项目,我的是C++项目,略有不同,此处略。

        (1)编译proto文件

在protos文件夹的上级目录Project2中打开命令行终端,并输入两条指令,用于生成对应.proto文件的.grpc.pb.cc/.h以及.pb.cc/.h文件。

 protoc -I="http://blog.csdn.net/weixin_44328139/article/details/protos" --grpc_out="http://blog.csdn.net/weixin_44328139/article/details/protos" --plugin=protoc-gen-grpc="D:ProjectGRPCProjectTestProjectProject2Project2Project2grpc_cpp_plugin.exe" "http://blog.csdn.net/weixin_44328139/article/details/protosroute_guide.proto"

protoc -I="http://blog.csdn.net/weixin_44328139/article/details/protos" --cpp_out="http://blog.csdn.net/weixin_44328139/article/details/protos" "http://blog.csdn.net/weixin_44328139/article/details/protos oute_guide.proto"

注意:其中:grpc_cpp_plugin.exe所在路径替换为您安装的路径。且proto路径根据自已的路径修改,如果不想修改,只需要根据我的路径存放proto文件即可。

        (2)生成项目

将生成的.grpc.pb.cc/.h  .pb.cc/.h以及proto文件添加到vs中,vs切换为Release x64版本(对应gRPC编译的版本,不知道Debug版本是否有问题,暂未尝试)。

注意:此处已有xxx_client.cc客户端文件与xxx_server.cc服务端文件,是从grpc源代码的范例中拷贝出来的,并稍做了修改,路径为“xxxgrpcexamplescpp oute_guide”

注意:需要查看生成的grpc.pb.h文件中是否包含中文注释,如果包含则需要删除中文注释,否则编译时将会出现

添加包含目录,如下图所示,路径为grpc的include安装路径

添加附加库目录,如下图所示,路径为grpc的lib安装路径

添加附加依赖项:

absl_bad_optional_access.lib

absl_bad_variant_access.lib

absl_base.lib

absl_city.lib

windows+vs2017 C++编译gRPC

absl_civil_time.lib

absl_cord.lib

absl_cordz_functions.lib

absl_cordz_handle.lib

absl_cordz_info.lib

absl_cordz_sample_token.lib

absl_cord_internal.lib

absl_debugging_internal.lib

absl_demangle_internal.lib

absl_examine_stack.lib

absl_exponential_biased.lib

absl_failure_signal_handler.lib

absl_flags.lib

absl_flags_commandlineflag.lib

absl_flags_commandlineflag_internal.lib

absl_flags_config.lib

absl_flags_internal.lib

absl_flags_marshalling.lib

absl_flags_parse.lib

absl_flags_private_handle_accessor.lib

absl_flags_program_name.lib

absl_flags_reflection.lib

absl_flags_usage.lib

absl_flags_usage_internal.lib

absl_graphcycles_internal.lib

absl_hash.lib

absl_hashtablez_sampler.lib

absl_int128.lib

absl_leak_check.lib

windows+vs2017 C++编译gRPC

absl_log_severity.lib

absl_low_level_hash.lib

absl_malloc_internal.lib

absl_periodic_sampler.lib

absl_random_distributions.lib

absl_random_internal_distribution_test_util.lib

absl_random_internal_platform.lib

absl_random_internal_pool_urbg.lib

absl_random_internal_randen.lib

absl_random_internal_randen_hwaes.lib

absl_random_internal_randen_hwaes_impl.lib

absl_random_internal_randen_slow.lib

absl_random_internal_seed_material.lib

absl_random_seed_gen_exception.lib

absl_random_seed_sequences.lib

absl_raw_hash_set.lib

absl_raw_logging_internal.lib

absl_scoped_set_env.lib

absl_spinlock_wait.lib

absl_stacktrace.lib

absl_status.lib

absl_statusor.lib

absl_strerror.lib

absl_strings.lib

absl_strings_internal.lib

absl_str_format_internal.lib

absl_symbolize.lib

absl_synchronization.lib

absl_throw_delegate.lib

windows+vs2017 C++编译gRPC

absl_time.lib

absl_time_zone.lib

address_sorting.lib

cares.lib

crypto.lib

gpr.lib

grpc++.lib

grpc++_alts.lib

grpc++_error_details.lib

grpc++_reflection.lib

grpc++_unsecure.lib

grpc.lib

grpcpp_channelz.lib

grpc_plugin_support.lib

grpc_unsecure.lib

libprotobuf-lite.lib

libprotobuf.lib

libprotoc.lib

re2.lib

ssl.lib

upb.lib

zlib.lib

        (3)运行项目

分别注释xxx_client.cc与xxx_server.cc文件中的main函数,并编辑,即可生成对应的client与server程序,先运行server程序,在运行client程序,进行通讯尝试,成功通讯。

6、感谢大佬分享

最后,再次感谢大佬的分享

 7、关于client客户端的封装与使用

转载请注明来自常州多彩网超声波设备有限公司,本文标题:《windows+vs2017 C++编译gRPC》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!
Top
 通城今天最新新闻  最新连环暴雷新闻  拜年儿童最新版  大连凯洋新闻最新  海豚最新版地图图片  淮滨疫情 今天最新消息  项城的高铁最新消息  英德最新洪峰新闻  武汉明日新闻最新消息  昆山物流最新招聘  浦北巴黎婚纱最新消息  苍南大渔湾填海最新消息  南岗区防疫最新消息电话  vivo乐园最新版本  丹灶镇招聘最新招聘  cdr最新版怎么安装  甜瓜派对最新版  开封烟花最新报道新闻  扬州疫情11日最新消息  武器大师2022最新版  一影视最新版  glom下载最新版  百度最新版本官方电话  浦东小厂招聘网最新招聘  绥德子洲新闻最新  国际最新冲突新闻  最新版g350  飞旭最新招聘  geokit最新版  项城撤县改区最新消息表 
多彩网