3

C++-Protobuf 不能在 VS2012 中编译。现在我想用MinGW在windows上编译它。有人可以给我一些关于如何在 Win7 x64 上编译 protobuf 的简短标题。我已经使用 GUI 安装程序安装了 MinGW。谷歌在 MinGW 设置通知中写道,我应该参考 Unix 安装说明。但我不知道如何在 Windows 上使用自动工具。

编辑

好的,这就是我到目前为止所做的:

$ mount C:/ WinDir
$ cd ./[...]/protobuf.2.4.1
$ ./configure
$ minGW32-make.exe
$ minGW32-make.exe check

minGW32-make.exe 运行没有错误,但没有运行测试,我找不到 libprotobuf.lib。有一些 libprotobuf.dll 但我需要 lib,不是吗?

4

3 回答 3

2

你应该有一个 MSys 控制台和你的 MinGW 安装。这个控制台提供了一个类似 linux 的环境,您应该能够在其中正常使用 autotools。

如果未安装 MSys,您也可以从 MinGW 站点获取它。

cd到您的目录与源代码并尝试通常:

$ ./configure
$ make

一些库在 Windows 上会导致问题,但大多数都可以很好地与 MinGW 和 MSys 一起编译。如果您遇到特定问题,请返回并为您的问题添加更多信息。


编辑:

minGW32-make.exe 运行没有错误,但没有运行测试,我找不到 libprotobuf.lib。有一些 libprotobuf.dll 但我需要 lib,不是吗?

通常对于动态库,您会得到protobuf.dll(动态库)和libprotobuf.a(静态包装库)。

链接时,只需传递-lprotobuf给链接器 - 它会同时查找libprotobuf.aprotobuf.lib

.lib是另一种静态库格式,由 MinGW 部分处理,但这里不是原生的。)

于 2012-11-29T10:32:52.703 回答
1

.lib使用 MinGW 工具链时,您不会使用文件。相反,您可以直接链接到 dll。MinGW Wiki 对此进行了解释

于 2012-11-29T11:36:36.240 回答
-1

我可以同时获得 dll 和 lib 。这是当您不想要静态 lib 文件并想要使用 dll 和 lib 文件时。您需要在 Protobuf 代码中进行以下更改:

  1. 在 VS 中打开项目。或任何其他编辑器。我使用VS2015。
  2. 在 libProtoBuf 项目设置中,在 C/C++ 预处理器中添加以下标志。PROTOBUF_USE_DLLS;LIBPROTOBUF_EXPORTS;这些标志将使用 dllexport 从 profobuf 导出信息

  3. 在您使用 Protobuf 的客户端代码中,定义:PROTOBUF_USE_DLLS。这将使 protobuf 包含使用 dllimport。

完成第 2 步后,您将在输出文件夹中看到 dll 和 lib。否则,您将始终只看到 dll 而不是 lib 文件。

希望这可以帮助。如果没有,请在此处留言,我可以帮助您解决此问题。

于 2017-03-24T15:24:41.567 回答