当前位置:首页 » 编程软件 » VS编译protobuf

VS编译protobuf

发布时间: 2024-12-12 11:37:39

① 如何在Windows环境下的VS中安装使用Google Protobuf完成SOCKET通信

1.下载protobuff,我下的是2.3.0版本
最新的protobuf可以到Google Code上下载:http://code.google.com/p/protobuf/downloads/list
当前版本为2.3.0,下载两个压缩包:protoc-2.3.0-win32.zip和protobuf-2.3.0.zip,前者是protobuf的编译器,后者包含了有三程序语言的开发包。

2.解压
首先解压protoc-2.3.0-win32.zip,把protoc.exe文件放到path路径中,最简单的做法就是把这个文件拷贝到C:/WINDOWS目录下。
解压protobuf-2.3.0.zip文件,将文件加压到C盘根目录,主文件位于C:/protobuf-2.3.0/protobuf-2.3.0目录下。

3.安装操作
(1)使用VS2005编译proto,VS工程目录位于vsprojects目录中,工程名字为“protobuf.sln”。

(2)选择“生成”à“生成解决方案”选项进行编译,编译过程中可能会由于编译的顺序报错误,可以使用手工逐个顺序编译生成,可能会比较顺利。按照下图的顺序,右键“重新生成”,逐个编译。但是我在实习操作过程中,libprotobuf-lite工程重来都没有成功编译通过过。淡定先,这个不会影响大局的。

(3)编译完成会在目录vsprojects下的Debug目录中生成lib和exe文件。
生成清单如下:
exe文件:
2010-04-15 09:51 950,272 lite-test.exe
2010-04-15 09:50 3,219,456 protoc.exe
2010-04-15 09:48 9,228,288 tests.exe
2010-04-15 09:56 2,519,040 test_plugin.exe

lib文件:
2010-04-15 09:50 2,685,922 libprotobuf-lite.lib
2010-04-15 09:56 24,100,794 libprotobuf.lib
2010-04-15 09:56 17,302,068 libprotoc.lib
其实我在测试过程中,lite-test.exe和libprotobuf-lite.lib并没有生成,因为编译错误了,但这并不影响大局,淡定先。

(4)OK,至此,我们已经完成了编译工作,下面需要进行的是protobuf的测试。我们需要使用到之前VS编译出来的libprotobuf.lib和libprotoc.lib完成一个C/S结构的SOCKET通信测试。

àProtobuf的测试
在VS2005下,创建两个新的工程,分别命名为server和client,每个工程都需要引用protobuf的头文件和lib文件。
一、添加protobuf头文件操作:右击项目à属性à配置属性àC/C++à常规 (也命令行可在中添加)。具体路径:C:/protobuf-2.3.0/protobuf-2.3.0/src
二、添加protobuf的lib文件操作:右击项目à属性à配置属性à链接器à常规(也可在命令行中添加)。具体路径:C:/protobuf-2.3.0/protobuf-2.3.0/vsprojects/Debug
三、CMD窗口下编译生成头文件:
C:/protobuf-2.3.0/protobuf-2.3.0/examples>protoc -I=./ --cpp_out=./ people.proto
将proto文件生成的文件放到当前目录。

② 编译protobuf

在编译osgearth3.5过程中,遇到了链接protobuf库的问题。起初使用了最新版本protobuf-28.0-rc1,通过cmake配置后成功编译。但在后续编译中,链接protobuf时出现错误。怀疑可能是版本问题,尝试使用较旧版本protobuf-3.4.0,发现cmake配置出现错误。将BUILD_TESTS选项取消并勾选BUILD_SHARED_LIBS,解决了链接问题,同时添加了zlib依赖。然而,生成的VS工程编译时仍报错,追踪到libprotobuf头文件hash.h中std::hash_compare未定义。通过添加_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS宏,解决了此问题。接着遇到了libprotobuf-lite工程编译问题,发现降级VS版本至VS2013即可解决,但并非预期结果。因此,选择protobuf-3.6.1版本进行编译,此版本在cmake配置时遇到与3.4.0类似错误,但libprotobuf-lite工程能够成功编译。tests工程报错,但不影响整体编译,卸载后,通过编译INSTALL工程实现了安装。在编译osgearth时,需在依赖protobuf的工程中添加预定义宏_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS,否则会报错。经过重新编译protobuf-28.0-rc1版本,发现只需将其编译为动态库(勾选BUILD_SHARED_LIBS选项)即可满足osgearth需求。此外,编译protobuf-28.0-rc1时还需添加abseil-cpp、googletest和jsoncpp库的源码,需从各自源码库下载并解压至对应文件夹。总之,明确版本兼容性问题,正确配置cmake选项,是解决此问题的关键。

热点内容
c语言中怎么赋值 发布:2025-09-19 01:17:43 浏览:955
公网服务器如何共享ip 发布:2025-09-19 01:03:43 浏览:236
存储器已几乎满 发布:2025-09-19 00:36:28 浏览:884
安卓系统在哪里输入网址 发布:2025-09-19 00:35:46 浏览:171
armlinuxgccgcc 发布:2025-09-19 00:35:37 浏览:425
wincachephp 发布:2025-09-19 00:30:28 浏览:863
如何给文件夹设置图标 发布:2025-09-19 00:06:09 浏览:750
火车头密码指纹锁多少钱 发布:2025-09-18 23:16:55 浏览:139
雪佛兰最高配置长什么样 发布:2025-09-18 23:16:54 浏览:173
网络通话源码 发布:2025-09-18 23:07:23 浏览:92