C++ Windows下使用MinGW的Google协议缓冲区
我试图在Windows上的Qt中使用google协议缓冲区。因此,我使用MingGW的msys从github编译protobuf源代码。proto编译器(protoc)似乎工作得很好,但不幸的是,在Qt环境中使用生成的.ph.h和.pb.cc文件不起作用 已将此添加到my.pro文件:C++ Windows下使用MinGW的Google协议缓冲区,c++,windows,qt,dll,mingw,C++,Windows,Qt,Dll,Mingw,我试图在Windows上的Qt中使用google协议缓冲区。因此,我使用MingGW的msys从github编译protobuf源代码。proto编译器(protoc)似乎工作得很好,但不幸的是,在Qt环境中使用生成的.ph.h和.pb.cc文件不起作用 已将此添加到my.pro文件: LIBS += "C:/MinGW/msys/1.0/bin/libprotobuf-10.dll" INCLUDEPATH += "C:/MinGW/msys/1.0/include/" 但是当我试图编译这个
LIBS += "C:/MinGW/msys/1.0/bin/libprotobuf-10.dll"
INCLUDEPATH += "C:/MinGW/msys/1.0/include/"
但是当我试图编译这个类时,我仍然会在所有使用过的方法中得到“未定义的引用…”
代码必须是正确的,因为它在使用protoc和Qt的linux机器上运行良好。它必须是我包含.dll的方式,或者我包含了一个错误的,因为头文件似乎可以很好地解析。
根据本文选择要包含的dll:
我在这里有点迷路了,希望能有机会
提前谢谢。使用以下配置前缀最终解决了这个问题:
./configure --prefix=`cd /mingw; pwd -W`
找到了解决办法 你在开发MSYS吗?为什么?你提到的任何东西都不是MSYS的一部分。您自己的应用程序不应依赖于
C:/MinGW/msys/1.0/bin
中的任何DLL,也不应使用C:/MinGW/msys/1.0/include
中的任何头文件;这些目录是为MSYS本身的开发而保留的。也许您打算改为引用C:/MinGW/include
和C:/MinGW/bin
目录?为了在windows上使用协议缓冲区,我必须使用MinGW或Cygwin进行编译(,请参阅windows部分)。但是为了能够在我的windows应用程序中使用生成的ph.h和pb.cc文件,我需要相应的头文件和库,它们显然在我编译它的msys目录中。我是否遗漏了一些东西,或者如果没有相应的标题和库,我怎么能使用它们呢?您遗漏了一些东西。使用MinGW编译时,使用的头和库必须位于C:/MinGW/{include,lib,bin}
树中;您不能使用C:/MinGW/msys/1.0
树中的组件,因为这些组件是msys本身的私有组件,而MinGW编译器不使用它们。您可能错误地安装了自己的自建组件,或者您正试图使用不适合自己使用的组件。在后一种情况下,您需要自己移植任何缺失的组件。很好的发现。试着从一个mingw shell(msys.bat
)运行pwd-W
,如果你好奇的话,看看你得到了什么。