zoukankan      html  css  js  c++  java
  • 更新protobuf版本后,出现google::protobuf::Any LNK2001等类似错误

    项目之前使用的protobuf版本为3.6.1,之后更新到3.12.1版本。
    使用的地方构建时出现了众多LNK2001找不到 google::protobuf::Any的链接错误:
    error LNK2001:无法解析的外部符号“const google::protobuf::Any:: 'vtable'” (??_7Any@protobuf@google@@6B@)

    出现链接问题的根源在于找不到对应数据结构或者函数的定义或实现,要么就是cpp实现文件没有加到工程解决方案中,要么就是链接的lib中没有定义。
    我这里使用的是链接lib的方式,由于google::protobuf::Any是protobuf库基本数据类型,于是猜测就是libprotobuf*.lib存在问题。

    重新编译构建protobuf,但是问题依旧存在。

    最终解决
    新版本的库由于新加入一些新的特性,所以最好阅读一下新的帮助手册。
    protobuf3.12.1需要加入预处理宏定义PROTOBUF_USE_DLLS
    如果使用CMAKE构建,可以在CMakeLists.txt中加入:ADD_DEFINTIONS(-DPROTOBUF_USE_DLLS)

    问题解决,不妨一试!

  • 相关阅读:
    [USACO08FEB]酒店Hotel 线段树 BZOJ 1593
    有趣的数 zoj 月赛
    [ZJOI2008]生日聚会 BZOJ1037 dp
    借教室 差分+二分答案
    HackerRank
    旅行计划 记忆化搜索
    灾后重建 Floyd
    [USACO10OCT]湖计数Lake Counting 联通块
    [TJOI2013]循环格 费用流 BZOJ3171
    高斯消元
  • 原文地址:https://www.cnblogs.com/MakeView660/p/13042589.html
Copyright © 2011-2022 走看看