关于预编译头 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

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

Java中使用Protocol Buffer

一、Protocol Buffer简介 什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍: Google Protocol Buffer( 简...
  • yubo_725
  • yubo_725
  • 2016年08月16日 13:21
  • 2546

Protocol Buffer简介、安装与使用

Protocol Buffer简介、安装与使用 1.Protobuf 简介 Google Protocol Buffer(简称Protobuf)是Google公司内部的混合语言数据标准,是一种轻便高...
  • liupenghui_200
  • liupenghui_200
  • 2016年06月19日 11:47
  • 3844

Protocol Buffer 入门

最近公司想要做一套自己的IM Server,老大让我学习一下Protocol Buffer。Protocol Buffer是什么东西、做什么用的、有什么优势这里不做解释。 参考: https:...
  • zhou_nan123
  • zhou_nan123
  • 2016年09月05日 16:10
  • 1117

Protocol Buffer技术详解(1)-语言规范

该系列Blog的内容主体主要源自于Protocol Buffer的官方文档,而代码示例则抽取于当前正在开发的一个公司内部项目的Demo。这样做的目的主要在于不仅可以保持Google文档的良好风格和系统...
  • zmx729618
  • zmx729618
  • 2016年11月03日 16:09
  • 469

Protocol Buffer 语法(syntax)

定义message 可自定义域的类型 分配Tags 域field的介绍 一些简单的操作 数据类型 optional域和默认值 枚举 message嵌套 导入其他proto文件 proto3 Messa...
  • sylar_d
  • sylar_d
  • 2016年05月05日 20:24
  • 6867

手把手教你如何安装Protocol Buffer

前言 习惯用 Json、XML 数据存储格式的你们,相信大多都没听过Protocol Buffer Protocol Buffer 其实 是 Google出品的一种轻量 & 高效的结构化数据存储格式,...
  • carson_ho
  • carson_ho
  • 2017年04月17日 10:40
  • 13754

Google Protocol Buffer介绍

转自:http://www.usidcbbs.com/simple/?t5565.html 简介 什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的...
  • yaonai2003
  • yaonai2003
  • 2014年02月20日 21:55
  • 11178

Protocol Buffer编码方式

[toc] 本文翻译自: https://developers.google.com/protocol-buffers/docs/encoding注:1、本文并非逐字逐句翻译,仅仅按照原文结构,以及...
  • sylar_d
  • sylar_d
  • 2016年05月08日 16:34
  • 1397

ProtocolBuffer安装与使用小结

一、安装: 1、参考资料: https://github.com/google/protobuf2、前方有坑:(1)$ ./autogen.sh 需要重要翻墙下一些东西,请确保终端可以FQ。这里使...
  • yeruby
  • yeruby
  • 2015年10月22日 18:35
  • 1855

在C++中使用Protocol Buffer

之前我翻译过一篇关于protocol buffers的文章:《在Python中使用protocol buffers参考指南》 后来想想,现在自己是用在C++中的,不如再翻译一下,顺便看看自己的E文有没...
  • losophy
  • losophy
  • 2016年05月30日 20:16
  • 2764
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于预编译头 protocol buffer 命名空间的问题
举报原因:
原因补充:

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