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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Windows环境下的VS中安装使用Google Protobuf完成SOCKET通信相关的知识,希望对你有一定的参考价值。

参考技术A 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文件生成的文件放到当前目录。本回答被提问者采纳
参考技术B http://blog.csdn.net/monkey_d_meng/article/details/5894910

如何冻结仅在虚拟环境中安装的软件包?

【中文标题】如何冻结仅在虚拟环境中安装的软件包?【英文标题】:How to freeze packages installed only in the virtual environment? 【发布时间】:2011-12-25 18:20:03 【问题描述】:

如何冻结只安装在虚拟环境中的包,即没有全局的包?

【问题讨论】:

【参考方案1】:

对我(macOS)来说,以下工作

path/to/venv/bin/pip3 freeze -l

【讨论】:

【参考方案2】:

我在 Windows 10,python 3.6 上,使用命令提示符激活了名为 env 的虚拟环境我发现 pip freeze -l 不起作用(错误),python -m pip freeze -l 不起作用(获取全局包)但更改为我的虚拟环境脚本目录并运行pip freezepip freeze -l 有效。这是我的虚拟环境 env 的此解决方案/解决方法的示例:

cd \env\Scripts
pip freeze > ..\..\requirements.txt

【讨论】:

【参考方案3】:
python venv/Path_to/bin/pip freeze -l 

【讨论】:

【参考方案4】:

您需要使用-l--local 选项仅冻结本地包(而不是全局包)

pip freeze -l > requirements.txt 

在进行pip freeze -l 之前,请确保您在virtualenv 中工作。

【讨论】:

对我来说这有效(或使用 python 用于旧版本):python3 -m pip freeze -l > requirements.txt【参考方案5】:

试试下面的命令:

pip -E /path/to/env/ freeze

【讨论】:

我认为-E参数是使用里面的requirements.txt文件来显示版本控制项目地址 它们是不同的“-E”参数:这是命令行参数,表示 pip 在给定的 virtualenv 中执行 你能指点我这方面的文档吗?即使启用了全局站点包,它是否也只冻结指定的 deverelenv? 运行“pip help”并查看“选项”部分。 $ pip -E venv/ freeze Usage: pip COMMAND [OPTIONS] pip: error: no such option: -E【参考方案6】:

在你的虚拟环境中安装你需要冻结的任何东西,然后

pip freeze > requirements.txt

然后在你不想冻结的虚拟环境中安装包。

【讨论】:

【参考方案7】:

仅虚拟环境中的本地包

pip freeze -l > requirements.txt # or --local instead of -l

只有用户在虚拟环境中安装的本地包

pip freeze --user > requirements.txt

有关详细信息,请参阅文档:https://pip.pypa.io/en/stable/reference/pip_freeze/。

【讨论】:

以上是关于如何在Windows环境下的VS中安装使用Google Protobuf完成SOCKET通信的主要内容,如果未能解决你的问题,请参考以下文章

如何解决windows10系统中安装vs2013报错问题

如何在 Windows 10 中安装 PostgreSQL 和连接设置

Win10 Hyper-v 中安装 CentOS 搭建开发环境

VS 2010 不工作并在 Windows 10 中安装 Visual Studio 2010 SP1 更新

在离线环境中安装Visual Stuido 2017

Windows 10环境中安装Snort+Barnyard2+MySQL