linux下用google protocol buffer(gpb)出现的编译问题------前后耗掉1个多小时
平常没有用google protocol buffer(gpb)协议, 而是用的公司的私有化序列化工具。 最近刚好要用这个gpb, 于是搞了一把。 在工程中看了一下, 之前是有对应的gpb基础库的, 所以搞起来没那么麻烦 但也出现了好几个问题哈, 下面一一道来。
首先是用protoc生成了test.pb.h和test.pb.cc文件, 然后使用。
遇到的第一个问题是:在编译的时候提示error, 说什么版本incompatible啊, 定位原因是:makefile中没有指定到对应的gpb库的头文件, 导致test.pb.h中的变量没有获取到正确的值, 实际上就是如下的GOOGLE_PROTOBUF_VERSION 没有正确获取。
#if GOOGLE_PROTOBUF_VERSION < 2004000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
#if 2004000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
#endif
然后用正确版本的protoc把test.pb.h和test.pb.cc文件重新生成一下即可。
然后遇到的问题是, 没有在makefile中指定基础的gpb库(libprotobuf.a), 这个简单, 直接在makefile中指定即可, 搞定。
最后遇到的问题是, 在某步, 编译还是有error, 提示: undefine xxx, 我纳闷了好久, test.pb.h包含了, 也在makefile中指定了对应的gpb基础库的头文件和库, 怎么还会出问题呢?。 请教了一下之前有用过gpb经验的同事, 发现原因是: 我们的makefile没有写好, 只认识.cpp文件, 不认识.cc文件。 好吧, 把test.pb.cc文件的文件名后缀修改为.cpp即可。 我也就呵呵哒了。
至此, 全部搞定, 第一次在linux下用gpb, 还是有点折腾的, 但没啥大不了的, 简单。
linux下用google protocol buffer(gpb)出现的编译问题------前后耗掉1个多小时相关推荐
- Google Protocol Buffer(GPB)使用之完全解析一:没有GPB的日子怎么过?
最近,我打算介绍一下一个好用的工具,即Google Protocol Buffer(GPB)的使用,这真的是一个非常有用的工具,你应该学它,并熟练使用它. 通常来讲,应该先介绍GPB是什么,但是,在这 ...
- Google Protocol Buffer(GPB)使用之完全解析三:如何使用GPB?
下面,我们来介绍一下如何使用GPB, 首先说明一下,我使用的环境是Windows XP + VS2005, 所用语言是C++, 如果你的环境不同,请参阅其它相关资料.其实,无论什么环境,都是大同小异的 ...
- windows下Google Protocol Buffer 编译安装(vs)教程
蒲公英的博客 分享技术带来的快乐 Kuaile.IN 搜索 首页 安卓相关 WordPress 主机相关 Linux相关 网络技术 电脑技术 编程技术 免费资源 当前位置: 首页 > 编程技术 ...
- Google Protocol Buffer 的使用和原理
FROM : https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Google Protocol Buffer 的使用和原理 Protocol ...
- 由Google Protocol Buffer的小例子引起的g++编译问题
问题 学习 Google Protocol Buffer 的使用和原理时,提供了一个小例子,讲述了protobuf的使用方法. 假如已经有了如下文件: 其中writer.cpp如下: #include ...
- c++ java通信 protocol buffer,google protocol buffer (C++,Java序列化应用实例)
google protocol buffer (C++,Java序列化使用实例) 转载,请注明出处: http://blog.csdn.net/eclipser1987/article/details ...
- 【C++】Google Protocol Buffer(protobuf)详解(一)
1.简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准, Protocol Buffers 是一种轻便高效的结构化数据存储格式 ...
- 只用2000行代码实现google protocol buffer c++版的功能
2019独角兽企业重金招聘Python工程师标准>>> google protocol buffer (下面简称gpb)功能强大,应用广泛,但在实际应用中,gpb需要写.proto脚 ...
- Google Protocol Buffer学习笔记(一)
概述: 新公司用的平台和相关技术都与原公司使用的不同,原来是linux+thrift而现在换成了windows+protobuf了. 参考资料: https://developers.google.c ...
最新文章
- R语言-安装使用指南
- 日记 [2008年01月21日]
- 牛客网暑期ACM多校训练营(第三场)A - PAXM Team(01背包)
- 给定任意字符串,计算一共能组合成多少个单词bing
- 加速你的Hibernate引擎(上)
- 【推荐】介绍两款Windows资源管理器,Q-Dir 与 FreeCommander XE(比TotalCommander更易用的免费资源管理器)...
- 关于安装PHP补装PDO与PDO_MYSQL操作
- 3 | 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?
- Java不适合于作为主要编程教学语言 -- 孟岩
- 所有for循环都可以用while循环改写python_python-for循环与while循环
- 固态硬盘安装记录之数据二次迁移
- 关于浏览器被2345恶意篡改被设置主页
- 英语考研——让步状语从句
- 2021年企业十大科技趋势预测
- There is no setter for property named ‘id‘ in ‘class com.atguigu.mybatistest.entity.User‘
- 关注龙之梦和长峰地产
- web端获取微信小程序云数据库数据实现增删改查等操作
- 谷歌浏览器设置缓存方法
- 基于微信小程序宠物交易系统
- InterSystems IRIS、IRIS for Health和HealthShare Health Connect的2021.1版本的预览版现在已经发布!...