hi,欢迎访问本站!
当前位置: 首页学习笔记正文

C++创建HelloWorld项目测试

用户投稿 学习笔记 8阅读
一. 空模板创建项目

创建一个C++空项目gRPC_Server, 本例使用Debug模式编译

二、拷贝项目文件

拷贝文件到gRPC_Server所在的目录中

D:\GRPCProject\gRPC_Project\grpc\examples\protos 中 helloworld.protoD:\GRPCProject\gRPC_Project\grpc\examples\cpp\helloworld中greeter_client.cc 和 greeter_server.ccD:\GRPCProject\gRPC_Project\grpc_install\bin 中 proto.exe 和 zlibd.dllD:\GRPCProject\gRPC_Project\grpc\.build\Debug 中 grpc_cpp_plugin.exe

三.  生成pb文件

cmd中输入如下命令,生成4个pb文件:

protoc.exe --grpc_out=. --plugin=protoc-gen-grpc=grpc_cpp_plugin.exe helloworld.proto

protoc.exe --cpp_out=. helloworld.proto

 四.  设置项目属性

把文件关联到项目中:

拷贝相关依赖包,使得项目能够独立运行:

创建文件夹depends, 子文件grpc 和 third_party将D:\GRPCProject\gRPC_Project\grpc\include 和 D:\GRPCProject\gRPC_Project\grpc\third_party\protobuf\src 拷贝到 grpc文件中去将下面文件夹中文件拷贝到third_party目录中:

                        D:\GRPCProject\gRPC_Project\grpc\.build\Debug

                        D:\GRPCProject\gRPC_Project\grpc\.build\third_party\cares\cares\lib\Debug

                        D:\GRPCProject\gRPC_Project\grpc\.build\third_party\zlib\Debug

                        D:\GRPCProject\gRPC_Project\grpc\.build\third_party\protobuf\Debug

4.1 【c/c++】-【常规】-【附件包含目录】

D:\GRPCProject\gRPC_Project\gRPC_Server\gRPC_Server\depends\grpc\include

D:\GRPCProject\gRPC_Project\gRPC_Server\gRPC_Server\depends\grpc\protobuf\src

4.2 【c/c++】-【预处理器】-【预处理器定义】 

添加:_WIN32_WINNT=0x0A00

 4.3 【链接器】-【常规】-【附加库目录】

D:\GRPCProject\gRPC_Project\gRPC_Server\gRPC_Server\depends\third_party

4.4 【链接器】-【输入】-【附加依赖项】

libprotobufd.lib

grpc.lib

grpc++.lib

gpr.lib

Ws2_32.lib

zlibd.lib

cares.lib

address_sorting.lib

 五.  编译项目

1.报错:E1696 无法打开 源 文件 "absl/synchronization/mutex.h",意思是缺少相关的头文件,进行头文件的添加。

解决:复制D:\GRPCProject\gRPC_Project\grpc\third_party\abseil-cpp下的文件到grpc.

 然后【c/c++】-【常规】-【附件包含目录】

2.再次点击运行,报错为:LNK2001  无法解析的外部符号 "public: __cdecl absl::Mutex::~Mutex(void)"

意思是:缺少头文件依赖的文件函数

解决:把D:\GRPCProject\gRPC_Project\grpc_install\lib路径下所以的lib文件拷贝到grpc third_party中,【链接器】-【输入】-【附加依赖项】中添加所以拷贝过去的文件名。

文件名太多,不想一个个复制,用python进行获取文件名:

import osnum = 0for filename in os.listdir(r"D:\GRPCProject\gRPC_Project\grpc_install\lib"): if filename.endswith(".lib"): num += 1 print(filename)print(num)

 

获取的文件名为:

absl_bad_any_cast_impl.lib

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_leak_check_disable.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.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-lited.lib

libprotobufd.lib

libprotocd.lib

re2.lib

ssl.lib

upb.lib

zlibd.lib

zlibstaticd.lib

文件名添加后,重新运行,成功!

标签:
声明:无特别说明,转载请标明本文来源!
发布评论
正文 取消