高校网站开发,网站项目需求说明书,18款禁用网站app全部,百度推广中心本文介绍在Windows下使用Visual Studio 2017编译gRPC 1.48.0并配置开发环境#xff0c;以及开发、配置一个简单的c服务端以及.net客户端。
0、前置条件 1、下载gRPC源码
使用git命令行在预备存放grpc源码的目录下执行, 此处我们下载的是 grpc 1.48.0
git clone -b v1.48.0 …本文介绍在Windows下使用Visual Studio 2017编译gRPC 1.48.0并配置开发环境以及开发、配置一个简单的c服务端以及.net客户端。
0、前置条件 1、下载gRPC源码
使用git命令行在预备存放grpc源码的目录下执行, 此处我们下载的是 grpc 1.48.0
git clone -b v1.48.0 https://github.com/grpc/grpc
进入源码目录
cd grpc
下载依赖库
git submodule update --init
*此处注意确保所有依赖库下载成功。
2、使用CMake生成工程文件
在生成工程文件时做做如下调整
l 添加ABSL_PROPAGATE_CXX_STD选项类型为bool设置为true
l 将源码目录下third_party\zlib\CMakeList.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环境已经配置好。
4、创建测试工程
创建一个解决方案GRPCTest包含c空项目CPPServer及.Net 控制台项目DotNetClient。
在解决方案目录下创建pb文件夹拷贝gRPC源码目录下examples\protos\helloworld.proto文件到pb文件夹中。
此时整个解决方案的目录结构如下 5、编译proto文件
打开命令行终端进入pb文件夹执行以下命令生成c文件及c#文件。 其中grpc_cpp_plugin.exe及grpc_csharp_plugin.exe所在路径替换为您安装的路径。
此时整个解决方案的目录结构如下 6、生成CPPServer项目
拷贝grpc源码目录下examples\cpp\helloworld\greeter_server.cc到CPPServer目录下并将文件helloworld.grpc.pb.h、helloworld.pb.h、greeter_server.cc、helloworld.grpc.pb.cc及helloworld.pb.cc添加到CPPServer工程中。
添加包含目录如下图所示路径为grpc的安装路径 添加附加库目录如下图所示路径为grpc的安装路径 添加附加依赖项
absl_bad_optional_access.lib
absl_bad_variant_access.lib
absl_base.lib
absl_city.lib
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
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
absl_time.lib
absl_time_zone.lib
address_sorting.lib
cares.libcrypto.lib
gpr.libgrpc.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
编译生成CPPServer
7、生成DotNetClient
通过Nuget安装Grpc、Grpc.Core及Google.Protobuf
将Helloworld.cs及HelloworldGrpc.cs文件添加到项目中。
编辑Program.cs如下所示
using System;
using Grpc.Core;
using Helloworld;namespace DotNetClient
{class Program{static void Main(string[] args){Channel channel new Channel(127.0.0.1:50051, ChannelCredentials.Insecure);var client new Greeter.GreeterClient(channel);var reply client.SayHello(new HelloRequest { Name tom });Console.WriteLine(Greeting: reply.Message);channel.ShutdownAsync().Wait();Console.WriteLine(Press any key to exit...);Console.ReadKey();}}
}
编译生成DotNetClient
8、测试
先运行CPPServer.exe再运行DotNetClient.exe 如下图所示