IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> C++创建HelloWorld项目测试 -> 正文阅读

[游戏开发]C++创建HelloWorld项目测试

一. 空模板创建项目

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

二、拷贝项目文件

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

  1. D:\GRPCProject\gRPC_Project\grpc\examples\protos 中 helloworld.proto
  2. D:\GRPCProject\gRPC_Project\grpc\examples\cpp\helloworld中greeter_client.cc 和 greeter_server.cc
  3. D:\GRPCProject\gRPC_Project\grpc_install\bin 中 proto.exe?和 zlibd.dll
  4. D:\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

?四.??设置项目属性

把文件关联到项目中:

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

  1. 创建文件夹depends, 子文件grpc 和 third_party
  2. 将D:\GRPCProject\gRPC_Project\grpc\include 和 D:\GRPCProject\gRPC_Project\grpc\third_party\protobuf\src 拷贝到 grpc文件中去
  3. 将下面文件夹中文件拷贝到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 os
num = 0
for 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

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

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:21:40  更:2022-04-06 16:23:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/16 20:02:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码