在 Windows 上安装协议缓冲区

Posted

技术标签:

【中文标题】在 Windows 上安装协议缓冲区【英文标题】:Install Protocol Buffers on Windows 【发布时间】:2012-11-16 22:49:36 【问题描述】:

我找不到在 Windows x64 平台上安装 Google Protocol Buffers(包括编译器)的明确说明。

我浏览了编译器和源代码的说明 README 文件:

对于编译器:要安装,只需将此二进制文件放在 PATH 中的某个位置

我将系统变量添加到路径:

PROTOC 'C:\dev_tools\protoc-2.4.1-win32'

我一直坚持使用 Cygwin 安装 Protocol Buffers 源。我试过以下 自述文件中提供的 Unix 说明:

构建和安装 C++ 协议缓冲区运行时和协议 缓冲区编译器(protoc)执行如下:

$ ./configure
$ make
$ make check
$ make install

如果make check 失败,你仍然可以安装,但很可能是 此库的某些功能将无法在您的系统上正常工作。 风险自负。

make install 可能需要超级用户权限。

有关 configure 和 make 的高级使用信息,请参阅 INSTALL.txt。

** 安装位置提示**

默认情况下,软件包将安装到 /usr/local。但是,在许多平台上,/usr/local/lib 不是 LD_LIBRARY_PATH 的一部分。您可以添加它,但安装到 /usr> 可能更容易。为此,请按如下方式调用配置:

./configure --prefix=/usr

我明白了

-bash: ./configure: No such file or directory'

有人可以提供清晰详细的步骤来完成这项工作吗?

更新

我改用 MSYS/MINGW32 并且 我遵循了link 中给出的说明。现在我陷入了以下困境:

当我运行“./configure”命令时,出现以下错误:检查如何运行 C++ 预处理器... /lib/cpp 配置:错误:C++ 预处理器“/lib/cpp”未通过健全性检查'

因此,make、make install 命令都不起作用。例如:

make: No targets specified and no makefile found. Stop.

【问题讨论】:

令人惊讶的是文档在安装它时有多糟糕。真可怜。 2019 和谷歌在 windows 上设置协议缓冲区的文档仍然很糟糕。 2020 年,情况并没有太大变化。 明天快 2022 年了,也好不到哪里去 【参考方案1】:

有一个完整的文档文件用于在 Windows 上编译 protobuf:

https://github.com/google/protobuf/blob/master/src/README.md#c-installation---windows https://github.com/google/protobuf/blob/master/cmake/README.md

您需要 7-zip、Cmake 和 Visual Studio。

无论如何,使用持续集成工具(如 Travis 或 Appveyor)的一个意想不到的副作用是始终有一个最新且有效的构建脚本可用。我碰巧总是查看appveyor.ymltravis_config.yml 文件,只要它们存在。

>>> git clone -b v3.1.0 https://github.com/google/protobuf.git 
>>> cd protobuf
>>> curl -L -o release-1.7.0.zip https://github.com/google/googlemock/archive/release-1.7.0.zip
>>> 7z x release-1.7.0.zip
>>> del /Q release-1.7.0.zip
>>> rename googlemock-release-1.7.0 gmock
>>> curl -L -o release-1.7.0.zip "https://github.com/google/googletest/archive/release-1.7.0.zip"
>>> 7z x release-1.7.0.zip
>>> del /Q release-1.7.0.zip
>>> rename googletest-release-1.7.0 gtest
>>> move gtest gmock
>>> set generator=Visual Studio 12 Win64
>>> set vcplatform=x64
>>> mkdir build_msvc
>>> cd build_msvc
>>> cmake -G "%generator%" -Dprotobuf_BUILD_SHARED_LIBS=%BUILD_DLL% -Dprotobuf_UNICODE=%UNICODE% ../cmake
>>> msbuild protobuf.sln /p:Platform=%vcplatform% || goto error

您需要curlGit Bash 有)以及解析7z.exeMsbuild.exe 可执行文件的路径。

我成功地在装有 Visual Studio 2015 的 Windows 10 x64 机器上构建了 protobuf 编译器。

【讨论】:

它是否也适用于java protobuf 编译器安装。看来您正在为安装c++ 编译器提供解决方案 没有 java protobuf 编译器:编译器是 C++ 并且有嵌入结果运行时的 java 绑定。我没有测试 Java 绑定,因为我不擅长 Java 和 Maven【参考方案2】:

如果您只想编译 ProtoBuf 定义,可以直接在 ProtoBuf GitHub 发布页面下载precompiled binaries of protoc for all platforms。

他们至少从 2015 年开始就已经预编译了二进制文件,但在多次下载之间很容易忽略它们。

【讨论】:

>> 但在众多下载之间很容易忽略它们。是的! 非常感谢。好的!那真的是真的!他们走到了尽头! 如果我想拥有运行时库怎么办?我认为这不足以解决问题中的问题。 @Subin_Sebastian:然后下载其他软件包之一。都在那里。 预构建的二进制文件不适用于 C++。【参考方案3】:

下载protoc-2.5.0-win32.zip

https://github.com/protocolbuffers/protobuf/releases/tag/v2.5.0

然后安装,只需将此二进制文件放在 PATH 中的某个位置

【讨论】:

请注意,二进制文件和其他文件位于默认情况下未展开的“资产”部分下。所以点击资产旁边的小向下箭头。【参考方案4】:

我在 Windows 10 上构建 protobuf v2.4.1 如下:

git clone https://github.com/protocolbuffers/protobuf.git; cd protobuf; git checkout v2.4.1; cd vsprojects 在 Visual Studio 2019 中打开 protobuf.sln 按构建解决方案并出现许多错误:最小未定义和最大未定义 添加文件 protobuf/stubs/common.h 下一个代码:
#if defined(_WIN32) && !defined(min)
#define min(a,b) __min(a,b)
#define max(a,b) __max(a,b)
#endif
按构建解决方案并出现错误:致命错误 C1189:“#error: hash_map 已弃用,将被删除…….” 添加编译定义-D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS解决问题 接下来我遇到了错误“error C2664: "std::pair std::make_pair(_Ty1 &&,_Ty2 &&) noexcept”...” 在文件 src\google\protobuf\compiler\command_line_interface.cc 中,我将字符串“proto_path_.push_back(make_pair(virtual_path, disk_path));”修改为“ proto_path_.push_back(make_pair(virtual_path, disk_path));

按构建解决方案。所有构建都成功。(测试项目在没有测试框架的情况下无法构建)

安装:

运行 extract_includes.bat 将所有公共头文件复制到单独的“include”目录(在***包目录下)。 将包含目录的内容复制到要放置标头的任何位置 将 protoc.exe 复制到您放置构建工具的任何位置 将 libprotobuf.lib、libprotobuf-lite.lib 和 libprotoc.lib 复制到您放置库的任何位置。

【讨论】:

【参考方案5】:

我建议在 Windows 上使用 vcpkg 工具。这是一步一步manual。

关于protobuf,首先检查你有哪些选项(在cmd中):

vcpkg 搜索 protobuf

接下来安装所需的包: vcpkg 安装 protobuf:x64-windows-static

注意冒号后面的x64-windows-static - 这是三元组。检查所有的 vcpkg 帮助三元组

然后转到 your_path\vcpkg-master\packages\protobuf_x64-windows-static\

现在您可以设置环境变量了。

【讨论】:

您可以通过省略“-static”部分来安装库的静态和动态版本【参考方案6】:

现在 protobuf 是 Visual Studio 中的 NuGet 包。去拿吧。

【讨论】:

使用 vcpk 安装给我这个错误Call Stack (most recent call first): scripts/cmake/vcpkg_configure_cmake.cmake:273 (vcpkg_execute_required_process) ports/protobuf/portfile.cmake:44 (vcpkg_configure_cmake) scripts/ports.cmake:71 (include) Error: Building package protobuf:x86-windows failed with: BUILD_FAILED【参考方案7】:

我用chocolatey安装了它,效果很好。

choco --install -y protoc

【讨论】:

【参考方案8】:

简单ref

choco install protoc --pre

【讨论】:

【参考方案9】:

用于在 windows 中安装 proto buff

转到https://github.com/protocolbuffers/protobuf/releases

向下滚动并下载适用于 Windows 的 zip 文件

Binary File

下载 zip 后,解压到 C:/

只需复制路径, C:\protoc-3.17.3-win64\bin 并将其设置为环境变量的路径

path setup

希望,这会有所帮助!

【讨论】:

【参考方案10】:

使用chocolatey

choco install protoc

【讨论】:

【参考方案11】:

choco install protoc --pre 工作,确保您处于提升状态。

这是我从 gitbash 运行 protoc 时的输出

$ 协议 用法:C:\ProgramData\chocolatey\lib\protoc\tools\bin\protoc.exe [OPTION] PROTO_FILES 解析 PROTO_FILES 并根据给定的选项生成输出: -IPATH, --proto_path=PATH 指定要搜索的目录

将它添加到我的 $path 环境变量中并没有按预期工作。

【讨论】:

以上是关于在 Windows 上安装协议缓冲区的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 中使用 MinGW 的 Google 协议缓冲区

Windows 上的 Thrift / Google 协议缓冲区

或针对协议缓冲区版本 3.5.1 编译的工具,与已安装版本不兼容

Google 协议缓冲区交叉编译

带有 windows phone 7 的协议缓冲网络

C ++中套接字上的协议缓冲区