在学习网络编程时,师兄给我提了个要求,让我用protobuf把字符串和图片打包发送,初次接触protobuf走了不少弯路,如今终于可以简单的使用,记录一下过程,但愿能给遇到一样问题的同窗一点帮助。
关于protobuf我就很少介绍了(我了解的也是皮毛,还在继续学习,哈哈哈哈哈~),使用环境:win10+VS2013,protobuf版本:2.6.1,文件已经上传到百度云,
连接:https://pan.baidu.com/s/1tAy2EN1kIkZFd4rlPFWqQQ
提取码:kwmcios
下载解压后能够看到以下文件目录:编程
打开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(其余版本也行)建立一个空项目,选择工程属性并配置:
ui
点击 配置属性 下的 C/C++ 的 常规,右边附加包含目录,导入这个路径E:\protobuf-2.6.1\src(根据本身文件存放路径来决定)
点击连接器 的常规,右边的附加库目录,导入这个路径E:\protobuf-2.6.1\vsprojects\Debug
spa
把以前生成的protobuf-test.pb.h和protobuf-test.pb.cc,复制到项目中:
写入以下代码:3d
#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_WARNINGScode
编译成功,结果以下:
blog
protobuf的更多使用等我用熟后再更新~图片