Google Protocol Buffer在windows下的配置

简介

什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍:

Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。

Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。

安装

系统环境:win7 + vs2015 + Qt5.9
protocol buffer: https://github.com/google/protobuf
cmake : http://www.cmake.org/

1. CMake

ProtoBuf的CMakeLists.txt文件在protobuf、cmake文件夹下
这里写图片描述
如果在cmake的时候,如果勾选protobuf_BUILD_TESTS选项时,一般会出现以上报错,需要安装googletest库。这里我们就不勾选这个选项了

在cmake gui界面中我们还可以看到protobuf_BUILD_SHARED_LIBS的选项,如果勾选,后期将编译生成动态链接库,如果不勾选将会生成静态链接库,下面将详细描述两种方式需要注意的问题:

2. 编译生成动态连接库

勾选protobuf_BUILD_SHARED_LIBS,并Generate生成项目并用vs2015打开,选择debug或release模式,生成相应的动态链接库;
在Qt中调用这些库构建时会出现类似于以下报警内容:

LNK2001 无法解析的外部符号 "class google::protobuf::internal::ExplicitlyConstructed<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > google::protobuf::internal::fixed_address_empty_string" (?fixed_address_empty_string@internal@protobuf@google@@3V?$ExplicitlyConstructed@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@123@A)    Protote 

解决办法:
添加PROTOBUF_USE_DLLS 预处理,即在pro文件中添加

DEFINES += PROTOBUF_USE_DLLS

3. 编译生成静态链接库

勾选protobuf_BUILD_SHARED_LIBS,并Generate生成项目并用vs2015打开,选择debug或release模式,在编译之前需要将项目属性中运行库设置为多线程调试,如图
这里写图片描述
不然会出现以下报警:

libprotobufd.lib(common.obj):-1: error: LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MTd_StaticDebug”不匹配值“MDd_DynamicDebug”(main.obj 中)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值