平常没有用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个多小时相关推荐

  1. Google Protocol Buffer(GPB)使用之完全解析一:没有GPB的日子怎么过?

    最近,我打算介绍一下一个好用的工具,即Google Protocol Buffer(GPB)的使用,这真的是一个非常有用的工具,你应该学它,并熟练使用它. 通常来讲,应该先介绍GPB是什么,但是,在这 ...

  2. Google Protocol Buffer(GPB)使用之完全解析三:如何使用GPB?

    下面,我们来介绍一下如何使用GPB, 首先说明一下,我使用的环境是Windows XP + VS2005, 所用语言是C++, 如果你的环境不同,请参阅其它相关资料.其实,无论什么环境,都是大同小异的 ...

  3. windows下Google Protocol Buffer 编译安装(vs)教程

    蒲公英的博客 分享技术带来的快乐 Kuaile.IN 搜索 首页 安卓相关 WordPress 主机相关 Linux相关 网络技术 电脑技术 编程技术 免费资源 当前位置: 首页 > 编程技术 ...

  4. Google Protocol Buffer 的使用和原理

    FROM : https://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Google Protocol Buffer 的使用和原理 Protocol ...

  5. 由Google Protocol Buffer的小例子引起的g++编译问题

    问题 学习 Google Protocol Buffer 的使用和原理时,提供了一个小例子,讲述了protobuf的使用方法. 假如已经有了如下文件: 其中writer.cpp如下: #include ...

  6. c++ java通信 protocol buffer,google protocol buffer (C++,Java序列化应用实例)

    google protocol buffer (C++,Java序列化使用实例) 转载,请注明出处: http://blog.csdn.net/eclipser1987/article/details ...

  7. 【C++】Google Protocol Buffer(protobuf)详解(一)

    1.简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准, Protocol Buffers 是一种轻便高效的结构化数据存储格式 ...

  8. 只用2000行代码实现google protocol buffer c++版的功能

    2019独角兽企业重金招聘Python工程师标准>>> google protocol buffer (下面简称gpb)功能强大,应用广泛,但在实际应用中,gpb需要写.proto脚 ...

  9. Google Protocol Buffer学习笔记(一)

    概述: 新公司用的平台和相关技术都与原公司使用的不同,原来是linux+thrift而现在换成了windows+protobuf了. 参考资料: https://developers.google.c ...

最新文章

  1. R语言-安装使用指南
  2. 日记 [2008年01月21日]
  3. 牛客网暑期ACM多校训练营(第三场)A - PAXM Team(01背包)
  4. 给定任意字符串,计算一共能组合成多少个单词bing
  5. 加速你的Hibernate引擎(上)
  6. 【推荐】介绍两款Windows资源管理器,Q-Dir 与 FreeCommander XE(比TotalCommander更易用的免费资源管理器)...
  7. 关于安装PHP补装PDO与PDO_MYSQL操作
  8. 3 | 复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?
  9. Java不适合于作为主要编程教学语言 -- 孟岩
  10. 所有for循环都可以用while循环改写python_python-for循环与while循环
  11. 固态硬盘安装记录之数据二次迁移
  12. 关于浏览器被2345恶意篡改被设置主页
  13. 英语考研——让步状语从句
  14. 2021年企业十大科技趋势预测
  15. There is no setter for property named ‘id‘ in ‘class com.atguigu.mybatistest.entity.User‘
  16. 关注龙之梦和长峰地产
  17. web端获取微信小程序云数据库数据实现增删改查等操作
  18. 谷歌浏览器设置缓存方法
  19. 基于微信小程序宠物交易系统
  20. InterSystems IRIS、IRIS for Health和HealthShare Health Connect的2021.1版本的预览版现在已经发布!...

热门文章

  1. 迅雷高速通道被举报无法下载问题
  2. 虚拟机Ubuntu安装开发环境配置
  3. mysql 子查询分组_mysql之子查询与分组查询
  4. python 求导实现_如何使用Python求导
  5. php ci框架目录结构,codeigniter框架目录结构、运行流程
  6. vue项目播放H.265编码视频流
  7. 02323_历年考试部分试题答案及解析
  8. Linux Shell中单引号、双引号、反引号的解释
  9. 百度BML飞桨训练营(六)公共场所火焰烟雾检测--PP-YOLOv2算法
  10. 阿里云短信服务接入流程