Protobuf 25.3系列3-生成和运行

作者在使用protobuf25.3编译后遇到关于absl库引用错误,文章描述了如何查找并链接abseil库以解决编译问题,以及在CMake文件中的配置调整。
摘要由CSDN通过智能技术生成

protobuf 25.3编译好了以后,写了一个简单的proto文件,进行序列化和反序列化验证。

生成pb的.cc和.h文件都没问题,但是在我的prototest里面,编译的时候,直接报了一堆类似以下的错误:

undefined reference to `absl::lts_20240116.1::log_internal::LogMessageFatal

难道现在pb文件生成以后,再编译,也要依赖absl了?

参考了网上的一些文章,也参考了protobuf里面的一些cmake写法,更新cmake文件:

cmake_minimum_required(VERSION 3.10)

file(GLOB c_files *.c *.cpp *.cc)

SET(THLIB_PATH /xxxx/xxxx)

find_package(utf8_range HINTS ${THLIB_PATH}/proto/lib/cmake CONFIG REQUIRED)
set(UTF8RANGE_LIBRARY utf8_range::utf8_validity utf8_range::utf8_range)

find_package(Protobuf HINTS ${THLIB_PATH}/proto/lib/cmake CONFIG REQUIRED)
set(PROTO_LIBARARY protobuf::libprotobuf)

find_package(absl HINTS ${THLIB_PATH}/absl/lib/cmake CONFIG REQUIRED)
set(ABSEL_LIBARARY
    absl::absl_check
    absl::absl_log
    absl::algorithm
    absl::base
    absl::bind_front
    absl::bits
    absl::btree
    absl::cleanup
    absl::cord
    absl::core_headers
    absl::debugging
    absl::die_if_null
    absl::dynamic_annotations
    absl::flags
    absl::flat_hash_map
    absl::flat_hash_set
    absl::function_ref
    absl::hash
    absl::layout
    absl::log_initialize
    absl::log_severity
    absl::memory
    absl::node_hash_map
    absl::node_hash_set
    absl::optional
    absl::span
    absl::status
    absl::statusor
    absl::strings
    absl::synchronization
    absl::time
    absl::type_traits
    absl::utility
    absl::variant
  )

add_executable(prototest ${c_files})
target_link_libraries(prototest ${PROTO_LIBARARY} ${UTF8RANGE_LIBRARY} ${ABSEL_LIBARARY})

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值