关于预编译头 protocol buffer 命名空间的问题

原创 2017年10月12日 00:27:01

最近在项目中碰到一些问题,在引入protocol buffer的时候,总是报命名空间被忽略的问题,还有莫名其妙的重定义的问题.折腾了好久 终于解决了. 现在 分享下我解决问题的步骤.
首先 说下预编译头 预编译头的概念:
所谓的预编译头就是把一个工程中的那一部分代码,预先编译好放在一个文件里(通常是以.pch为扩展名的),这个文件就称为预编译头文件这些预先编译好的代码可以是任何的C/C++代码 甚至是inline的函数,但是必须是稳定的,在工程开发的过程中不会被经常改变。如果这些代码被修改,则需要重新编译生成预编译头文件。注意生成预编译头文件是很耗时间的.同时你得注意预编译头文件通常很大,通常有6-7M大。注意及时清理那些没有用的预编译头文件.
项目中碰到的问题 : 预编译头没有及时清理导致编译出错.我在碰到编译不能通过的情况下(新引入protocol) 将文件逐个编译(vs CTRL+F7) 第一次没有通过 将预编译头清掉(清理解决方案就可以了) 又编译一次 这次文件编译通过了 但项目整个编译没有通过 估计是protocol的问题
现在说下protocol
protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域.
我发现出现问题很大一部分原因是头文件的包含顺序问题 于是我将protocol的头文件放在最前面 引用的头文件也放在最前面 项目编译的时候 部分错误解决 但仍旧不能完成编译
我觉得现在还是头文件的问题 于是我将stdafx.h中包含的头文件注释掉 这时候所有的文件编译完成 链接时提示 __iob_func在文件中重定义 于是我设置强制输出/FORCE:MULTIPLE https://msdn.microsoft.com/zh-cn/library/70abkas3.aspx
编译通过 但总觉得解决方案不够完美
后来考虑在预编译头中加入protocol的头文件 并将其放在最前面 将之间stdafx.h中注释掉的头文件放开 编译通过
ps: __iob_func 重定义是因为之前的库是用vs2010编译的 今天用vs2015编译了一下 好了

引用
http://blog.csdn.net/huapeng_guo/article/details/7663723

版权声明:本文为博主原创文章,未经博主允许不得转载。

linux下用google protocol buffer(gpb)出现的编译问题------前后耗掉1个多小时

平常没有用google protocol buffer(gpb)协议, 而是用的公司的私有化序列化工具。 最近刚好要用这个gpb, 于是搞了一把。 在工程中看了一下, 之前是有对应的gpb基础库的, ...
  • stpeace
  • stpeace
  • 2016年05月15日 11:10
  • 3461

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

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

protocol buffer newBuilder速度慢问题

最近的这个项目一直使用protocol buffer作为协议层,大家在使用的过程中发现,每次在创建消息的builder——即newBuilder的时候,会非常的慢(常常需要20ms以上),以至于大家现...

Android NDK下编译google protocol buffer(protobuf)

前面发了一片windows下编译protobuf的文章 后来把生成的.a文件加到android工程后发现不可用 所以只好自己使用NDK编译protobuf了(虽然这样,生成的Inclule的头文件...

VS2010 下编译Protocol Buffer 及使用

VS2010下编译ProtocolBuffer 及使用   1.      从http://code.google.com/p/protobuf/downloads/list上下载protobuf...

Android NDK下编译google protocol buffer

Android NDK编译protobuf 其实用NDK编译最大的难点就是make文件,把这个搞定就基本搞定了 好了,现在开始吧 一、安装java环境和NDK...

ios 编译并使用Protocol Buffer

ios 编译并使用Protocol Buffer

windows下Google Protocol Buffer 编译安装教程

原文出自:http://kuaile.in/archives/1214 作者:蒲公英   发布:2012-10-07 21:57   分类:编程技术 protobuf的全称是Protoco...

unity 可用的protocol buffer

  • 2015年12月31日 00:31
  • 5.07MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于预编译头 protocol buffer 命名空间的问题
举报原因:
原因补充:

(最多只允许输入30个字)