本篇直入正题,相信用protoc.exe生成需要的两个头文件和两个cpp大家已经在各种教程中已经读过了,而且现在并不需要编译以前的cmake项目,可以直接去官网上下载相应的程序(https://packages.grpc.io/archive/2022/02/cc3de1c3eba4c342c406729649f3c39f829dcdbc-24ad316a-7a17-4194-ac29-a95eceae67c6/index.xml),但是要注意所有的库一定要使用相同的版本,不然出现问题很难找到。
QT里其实最难的问题就是如何导入grpc的依赖库,这才是配置的难点,在vs中,你可以用链接器选择 *.lib来选择目录下所有的静态库,但是qt无法批量导入,这时候你可能会想是不是导入几个关键的就可以了,答案是不,一定要把grpc依赖包里的近50个静态库一个一个添加进来,这样才不会出错(我使用了相对目录,找到这些静态库后,改下文件名就可以轻松导入所有grpc库了,以下写法采用标准的qt导入静态库的写法,比自己从项目中导入还要简单方便)。总结来说就两点:1、找好include文件,把include文件放到工程目录下(这个在c盘grpc目录下) 2、导入所有的静态库 (在grpc包里)
LIBS += -L$$PWD/staticlib/ -labsl_bad_optional_access
LIBS += -L$$PWD/staticlib/ -labsl_bad_variant_access
LIBS += -L$$PWD/staticlib/ -labsl_base
LIBS += -L$$PWD/staticlib/ -labsl_city
LIBS += -L$$PWD/staticlib/ -labsl_civil_time
LIBS += -L$$PWD/staticlib/ -labsl_cord
LIBS += -L$$PWD/staticlib/ -labsl_debugging_internal
LIBS += -L$$PWD/staticlib/ -labsl_demangle_internal
LIBS += -L$$PWD/staticlib/ -labsl_exponential_biased
LIBS += -L$$PWD/staticlib/ -labsl_graphcycles_internal
LIBS += -L$$PWD/staticlib/ -labsl_hash
LIBS += -L$$PWD/staticlib/ -labsl_hashtablez_sampler
LIBS += -L$$PWD/staticlib/ -labsl_int128
LIBS += -L$$PWD/staticlib/ -labsl_log_severity
LIBS += -L$$PWD/staticlib/ -labsl_malloc_internal
LIBS += -L$$PWD/staticlib/ -labsl_raw_hash_set
LIBS += -L$$PWD/staticlib/ -labsl_raw_logging_internal
LIBS += -L$$PWD/staticlib/ -labsl_spinlock_wait
LIBS += -L$$PWD/staticlib/ -labsl_stacktrace
LIBS += -L$$PWD/staticlib/ -labsl_status
LIBS += -L$$PWD/staticlib/ -labsl_str_format_internal
LIBS += -L$$PWD/staticlib/ -labsl_strings
LIBS += -L$$PWD/staticlib/ -labsl_strings_internal
LIBS += -L$$PWD/staticlib/ -labsl_symbolize
LIBS += -L$$PWD/staticlib/ -labsl_synchronization
LIBS += -L$$PWD/staticlib/ -labsl_throw_delegate
LIBS += -L$$PWD/staticlib/ -labsl_time
LIBS += -L$$PWD/staticlib/ -labsl_time_zone
LIBS += -L$$PWD/staticlib/ -laddress_sorting
LIBS += -L$$PWD/staticlib/ -lcares
LIBS += -L$$PWD/staticlib/ -lcrypto
LIBS += -L$$PWD/staticlib/ -lgpr
LIBS += -L$$PWD/staticlib/ -lgrpc
LIBS += -L$$PWD/staticlib/ -lgrpc_plugin_support
LIBS += -L$$PWD/staticlib/ -lgrpc_unsecure
LIBS += -L$$PWD/staticlib/ -lgrpc++
LIBS += -L$$PWD/staticlib/ -lgrpc++_alts
LIBS += -L$$PWD/staticlib/ -lgrpc++_error_details
LIBS += -L$$PWD/staticlib/ -lgrpc++_reflection
LIBS += -L$$PWD/staticlib/ -lgrpc++_unsecure
LIBS += -L$$PWD/staticlib/ -lgrpcpp_channelz
LIBS += -L$$PWD/staticlib/ -llibprotobufd
LIBS += -L$$PWD/staticlib/ -llibprotobuf-lited
LIBS += -L$$PWD/staticlib/ -llibprotocd
LIBS += -L$$PWD/staticlib/ -lre2
LIBS += -L$$PWD/staticlib/ -lssl
LIBS += -L$$PWD/staticlib/ -lupb
LIBS += -L$$PWD/staticlib/ -lzlibd
LIBS += -L$$PWD/staticlib/ -lzlibstaticd
ps:这时如果可以编译通过,但是无法运行(出现一个程序异常结束),那么你需要进入到你build的debug路径下,你双击编译出的exe文件,会提示你缺少zlibd.dll。这时只需要把这个文件放到这个路径下,整个项目就可以编译运行了。