45

我找不到在 Windows x64 平台上安装 Google 协议缓冲区(包括编译器)的明确说明。

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

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

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

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

我坚持使用 Cygwin 安装协议缓冲区源。我尝试按照自述文件中提供的 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 并按照此链接中给出的说明进行操作。现在我坚持以下几点:

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

结果,make、make install 命令都不起作用。例如:

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

11 回答 11

23

如果您只想编译 ProtoBuf 定义,您可以在 ProtoBuf GitHub 发布页面上为所有平台下载预编译的protoc 二进制文件。

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

于 2019-01-10T17:03:15.113 回答
18

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

你需要 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 编译器。

于 2017-01-07T14:34:40.463 回答
15

用于在 Windows 中安装 proto buff

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

向下滚动并下载与 Windows 兼容的 zip

二进制文件

下载 zip 后,将其解压缩到 C:/

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

路径设置

希望这可以帮助!

于 2021-06-12T05:46:08.833 回答
5

从下载 protoc-2.5.0-win32.zip

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

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

于 2019-12-25T21:52:59.147 回答
5

使用巧克力

choco install protoc

于 2021-07-10T04:39:38.233 回答
3

我在 Windows 10 上构建了 protobuf v2.4.1,如下所示:

  • git 克隆https://github.com/protocolbuffers/protobuf.git
  • cd protobuf;
  • 混帐结帐 v2.4.1;
  • cd vsprojects
  • 在 Visual Studio 2019 中打开 protobuf.sln
  • 按构建解决方案并出现许多错误: min undefined 和 max undefined 添加文件 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 已弃用,将被删除……。”</li>
  • 添加编译定义-D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS解决问题
  • 接下来我遇到了错误“<em>error C2664: "std::pair std::make_pair(_Ty1 &&,_Ty2 &&) noexcept”...</em>”</li>
  • 在文件 src\google\protobuf\compiler\command_line_interface.cc 我修改了字符串“<em>proto_path_.push_back(make_pair< string, string >(virtual_path, disk_path));” 到“<strong>proto_path_.push_back(make_pair(virtual_path, disk_path));”
  • 按构建解决方案。所有构建都成功。(测试项目在没有测试框架的情况下不构建)

    安装:

  • 运行 extract_includes.bat 将所有公共头文件复制到单独的“包含”目录(在顶级包目录下)。
  • 将包含目录的内容复制到要放置标头的任何位置
  • 将 protoc.exe 复制到您放置构建工具的任何位置
  • 将 libprotobuf.lib、libprotobuf-lite.lib 和 libprotoc.lib 复制到您放置库的任何位置。
于 2020-04-10T16:03:19.923 回答
3

我用巧克力安装了它,它工作得很好。

choco --install -y protoc
于 2020-09-23T00:18:52.790 回答
1

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

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

vcpkg 搜索 protobuf

在此处输入图像描述

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

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

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

在此处输入图像描述

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

于 2020-05-05T20:26:48.287 回答
0

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

于 2020-05-07T18:18:38.973 回答
0

很容易参考

choco install protoc --pre
于 2020-09-24T08:52:31.677 回答
0

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

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

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

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

于 2021-08-15T02:21:09.293 回答