您的位置:首页 > 编程语言 > Go语言

VS2013+protobuf-2.5.0 编译源码,嵌入新工程,使用google protobuf数据格式协议

2017-07-28 15:39 323 查看
1、下载两个压缩包,protobuf-2.5.0.tar.gz , protobuf-2.5.0-win32.zip (压缩包已经上传,可以通过我的名字去查找看看)

2、解压protobuf-2.5.0-win32.zip,把protoc.exe丢到C盘的windows 目录下

3、解压protobuf-2.5.0.tar.gz,进入vsprojects目录(如果你找不到,说明你的版本问题,重新下载吧)

4、在vsprojects目录下会找到extract_include.bat批处理文件,直接双击运行,会在本目录下生成一个include文件夹

5、在vsprojects目录下找到后缀是sln的文件,用VS打开这个文件。

6、打开之后你会发现有9个工程,我们只需要关心libprotobuf,libprotobuf-lite ,libprotoc 这三个工程,我们需要得到对应的三个lib

7、打开libprotobuf工程下的Source Files文件夹,找到zero_copy_stream_impl_lite.cc,打开它,在最前面加上一个头文件#include <algorithm>,保存关闭

8、打开libprotobuf工程下的Head Files文件夹,找到repeated_field.h,打开它,用ctrl+f找关键词internal. 找到

namespace internal {

template <typename Element, bool HasTrivialCopy>

void ElementCopier<Element, HasTrivialCopy>::operator()(
Element to[], const Element from[], int array_size) 
{

  
std::copy(from, from + array_size, to);

}

    }

这个整体,然后把std::copy(from, from + array_size, to);隐掉,
替换成std::copy(from,from+array_size,stdext::checked_array_iterator<Element*>(to,array_size));

9、在libprotobuf上点击右键,选择 仅用于项目->仅重新生成libprotobuf.  这时候会单独编译这个工程,会生成lib文件在Debug目录下。

10、在libprotobuf-lite上点击右键,选择 仅用于项目->仅重新生成libprotobuf-lite 这时候会单独编译这个工程,会生成lib文件在Debug目录下。

11、在libprotoc 上点击右键,选择 仅用于项目->仅重新生成libprotobuf-lite 这时候会单独编译这个工程,会生成lib文件在Debug目录下。

//------------------------上面的操作最后得到了三个lib文件,很重要---------------------------------//

12、创建一个console的C++工程,直接编译没错就行。我要的就是一个空的或者带着main的工程。

13、进入刚创建的工程目录,也就是后缀是sln的文件所在的这个位置,在这个目录下创建一个lib空文件夹,一个空的src文件夹

14、把刚才生成的三个lib文件拷贝到这里的lib下

15、去protobuf解压所在的目录,找到src文件夹,把里面的google文件夹全部拷贝到新创建的工程的src文件夹下。

16、在新创建的工程的sln所在的目录的位置,新建一个文件,person.proto,文件内容就是你要自定义的数据协议

message Person {

  required int32 id = 1;

  required string name = 2;

  <
949b
span style="white-space:pre;">optional string email = 3;
}

这就是文件的内容。

17、去protobuf解压所在的目录,找到我之前说的extract_include.bat批处理文件,把这个文件放到后缀名为vcxproj文件所在的目录下

18、双击运行extract_include.bat,当前目录下会有include文件夹,就对了。

19、去新创建的工程的后缀名sln所在的目录下,新建一个build.bat文件,内容为protoc --cpp_out=./ Person.proto,保存关闭。

20、直接双击build.bat,当前目录下回生成Person.pb.cc ,Person.pb.h两个文件。

//-----------上面主要是移植---------------------//

21、打开新工程,如果已将打开,就不用操作了。

22、添加头文件Person.pb.h,添加源文件Person.pb.cc

23、主程序头部,添加#include "Person.pb.h"

24、点击工程名字,右键选择属性->VC++目录->包含目录  这里添加两个目录,一个是新工程生成的include所在的路径,一个是Person.pb.h所在
的路径

25、点击工程名字,右键选择属性->链接器->常规  在附加库目录这,选择新工程的lib文件夹得路径

26、点击工程名字,右键选择属性->链接器->输入  在附加依赖项,添加libprotobuf.lib ,libprotobuf-lite.lib ,libprotoc.lib
这三个lib文件,也是我们前面生成的lib文件,已经拷贝到了新工程的lib文件夹下。

//--------------一切准备就绪,可以开始写代码使用了---------------------------//

我所说的,全都是针对我所上传的两个压缩包,其他的我不敢保证哦。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐