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,不是吗?。
答案 0 :(得分: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.a
和protobuf.lib
。
(.lib
是另一种静态库格式,由MinGW部分处理,但不是原生的。)
答案 1 :(得分:1)
使用MinGW工具链时,您将无法使用.lib
文件。相反,您可以直接链接到DLL。 The MinGW Wiki explains this
答案 2 :(得分:-1)
我可以获得dll和lib。这是当你不想要静态lib文件并想要使用dll和lib文件时。 您需要在Protobuf代码中进行以下更改:
在libProtoBuf项目设置中,在C / C ++预处理器中添加以下标志。 PROTOBUF_USE_DLLS; LIBPROTOBUF_EXPORTS; 这些标志将使用dllexport
在您使用Protobuf的客户端代码中,定义:PROTOBUF_USE_DLLS。这将使protobuf包括使用dllimport。
执行第2步后,您将在输出文件夹中看到dll和lib。否则,您将始终只看到DLL而不是lib文件。
希望这会有所帮助。如果没有,请在这里写一条消息,我可以帮助你解决这个问题。