Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Windows下使用MinGW的Google协议缓冲区_C++_Windows_Qt_Dll_Mingw - Fatal编程技术网

C++ Windows下使用MinGW的Google协议缓冲区

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/" 但是当我试图编译这个

我试图在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/"
但是当我试图编译这个类时,我仍然会在所有使用过的方法中得到“未定义的引用…”

代码必须是正确的,因为它在使用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
,如果你好奇的话,看看你得到了什么。