You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio 2019编译Protobuf C++示例出现LNK2019链接错误如何解决

error LNK2019: unresolved external symbol "public: bool __cdecl google::protobuf::MessageLite::ParseFromArray(void const *,int)" (?ParseFromArray@MessageLite@protobuf@google@@QEAA_NPEBXH@Z) referenced in function "void __cdecl ReceiveRequest(bool *)"

解决方案
  • 检查编译架构一致性
    确认Protobuf静态库编译时的目标架构(x86/x64)和业务项目的目标架构完全匹配,二者架构不同会直接导致符号无法识别。
  • 检查运行库选项匹配
    两者的运行库选项(项目属性 → C/C++ → 代码生成 → 运行库)必须完全一致,不允许交叉混用:
    • Debug版本对应多线程调试DLL(/MDd)或多线程调试(/MTd)
    • Release版本对应多线程DLL(/MD)或多线程(/MT)
  • 检查预处理器宏定义一致性
    业务项目的预处理器定义必须和编译静态库时的定义完全对齐,重点校验两个宏:
    • 若编译静态库时定义了PROTOBUF_USE_DLLS,业务项目也必须添加该宏,反之则不能添加
    • Debug版本需同步定义PROTOBUF_DEBUG宏,Release版本需同步取消该宏定义
  • 检查静态库依赖配置
    确认项目附加依赖项中已经添加了对应版本的Protobuf静态库,且没有混用Debug和Release版本的库文件:
    • Debug版本添加libprotobufd.lib
    • Release版本添加libprotobuf.lib
  • 检查头文件与库版本一致性
    业务项目引入的Protobuf头文件版本,必须和编译静态库使用的Protobuf源码版本完全一致,头文件与库版本不匹配会导致符号声明和导出实现不对应。

内容的提问来源于stack exchange,提问作者ree

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:06:00