protobuf在windows环境下的使用
在学习网络编程时,师兄给我提了个要求,让我用protobuf把字符串和图片打包发送,初次接触protobuf走了很多弯路,现在终于能够简单的使用,记录一下过程,希望能给遇到同样问题的同学一点帮助。
关于protobuf我就不多介绍了(我了解的也是皮毛,还在继续学习,哈哈哈哈哈~),使用环境:win10+VS2013,protobuf版本:2.6.1,文件已经上传到百度云,
链接:https://pan.baidu.com/s/1tAy2EN1kIkZFd4rlPFWqQQ
提取码:kwmc
下载解压后可以看到如下文件目录:
打开vsprojects文件夹,可以看到protobuf.sin,用VS打开。
在VS打开后有如下目录,这里我们只需要生成libprotobuf,libprotoc即可。
在做完这些之后,在Debug目录下就有了我们想要的protoc.exe,以及一些 .lib文件。现在我们就可以来尝试使用protobuf了,下面是使用步骤:
1.定义自己的proto
打开…\protobuf-2.6.1\examples,可以看到一些已有的例子,在此路径下创建 protobuf-test.proto,内容如下:
package tutorial;
message Test {
required string testName = 1;
required int32 testAge = 2;
optional string testEmail = 3;
}
2.然后用cmd运行protoc.exe生成我们的目标语言格式 C++
命令如下:protoc -I=E:\protobuf-2.6.1\examples --cpp_out=E:\protobuf-2.6.1\examples E:\protobuf-2.6.1\examples\protobuf-test.proto
在…\examples 路径下就生成了如下文件:
3.使用
用vs2013(其他版本也行)创建一个空项目,选择工程属性并配置:
点击 配置属性 下的 C/C++ 的 常规,右边附加包含目录,导入这个路径E:\protobuf-2.6.1\src(根据自己文件存放路径来决定)
点击链接器 的常规,右边的附加库目录,导入这个路径E:\protobuf-2.6.1\vsprojects\Debug
把之前生成的protobuf-test.pb.h和protobuf-test.pb.cc,复制到项目中:
写入如下代码:
#include <iostream>
#include "protobuf-test.pb.h"
#pragma comment(lib, "libprotobuf.lib")
#pragma comment(lib, "libprotoc.lib")
using namespace std;
using namespace tutorial;
int main()
{
Test mas1;
mas1.set_testname("CSDN");
mas1.set_testage(10);
cout << mas1.testname() << endl;
cout << mas1.testage() << endl;
system("pause");
return 0;
}
运行,报如下错误:
解决方法如下:
右键点击工程 -> 属性 -> C/C++ -> 常规 -> SDL检查
改为:否 (/sdl-)
或者:
右键点击工程 -> 属性 -> C/C++ ->预处理器
添加宏定义 _SCL_SECURE_NO_WARNINGS
编译成功,结果如下:
protobuf的更多使用等我用熟后再更新~