背景:
这次项目用到了protobuf协议,原来在c++builder上面也是用过的,以为把库文件以及lib文件转过去就行了,然鹅,就被现实狠狠打脸了。。。
解决步骤:
1.需要的文件protobuf2.4.1,因为我们的服务器使用的版本是这个,这次继续这个版本,下载地址从github下载(google的官方下载) https://github.com/google/protobuf/releases/tag/v2.4.1 下载名为protobuf-2.4.1.zip的文件,大小约2.39M,下载完成后解压;
2.双击打开解压文件中“protobuf-2.4.1\vsprojects\protobuf.sln”文件,出现类型兼容性的提示,点击确定,这个弹出的提示我忘了具体是什么了,点击确定就行;
3.右键单击libprotobuf,选择属性,在C++预处理器,预处理器定义中里增加“_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS“,同理在libprotoc里面也进行这样的操作;
4.右键单击libprotoc,然后”生成“,期间会遇到错误:错误1:”max“,”min“无定义,在这些的文件中加上#include <algorithm>头文件清空再次编译,这时还有一些其它错误时,不用管它,能生成我们需要的动态库,libprotobuf.lib 和libprotoc.lib 文件,没有找到时来debug文件下找,可以根据你生成的版本来找对应的动态库。你也可以单独编译这俩个工程,生成对应的lib文件就好!
5.在我编译的过程中出现了一个一眼看上去特别的牛的bug,但是吧,其实还好,“protobuf/src/google/protobuf/compiler/command_line_interface.cc”就是这个文件的一行代码有问题,vs2015一直编译不过去,和github提供的这个文件对比吧,能找到错误的,文件网址如下https://github.com/google/protobuf/blob/master/src/google/protobuf/compiler/command_line_interface.cc
至此,你就应该能找到libprotoc.lib以及libprotobuf.lib文件了