本想用google的libphonenumber这个库来进行电话号相关功能,但是看到需要依赖protobuf,反正都是谷歌出品,那就顺便了解学习一下protobuf。
github地址:
https://github.com/google/protobuf
什么是protobuf
Protocol Buffers (a.k.a., protobuf) are Google’s language-neutral, platform-neutral, extensible mechanism for serializing structured data. You can find protobuf’s documentation on the Google Developers site.
protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台。google 提供了多种语言的实现:java、c#、c++、go 和 python,每一种实现都包含了相应语言的编译器以及库文件。由于它是一种二进制的格式,比使用 xml 进行数据交换快许多。可以把它用于分布式应用之间的数据通信或者异构环境下的数据交换。作为一种效率和兼容性都很优秀的二进制数据传输格式,可以用于诸如网络传输、配置文件、数据存储等诸多领域。
下载带vsprojects的版本
我们需要下载带vsprojects的版本,所以不需要太新的,我们要下载2.6
https://github.com/google/protobuf/releases?after=v3.0.0-alpha-3
下载后解压,就可以看到有一个叫vsprojects的文件夹了。
使用vs2015编译
可以使用vs2010编译的,相对简单一些,但我们使用vs2015.
1打开sln
2编译错误以及解决
错误1:
error C2338: is deprecated and will be REMOVED. Please use . You can define _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS to acknowledge that you have received this warning.
解决方法:
添加预编译:
_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
错误2:
如果要将多个 CL.EXE 写入同一个 .PDB 文件,请使用 /FS
解决方法:
添加命令行 /FS
错误3:
error C3688: 文本后缀“PATH_SEPARATOR”无效;未找到文文本运算符或文本运算符模板“operator “”“”PATH_SEPARATOR”
解决方案:
Run(“protocol_compiler –test_out= tmpdir”“–p