C++ Qt无法与g+链接+;

C++ Qt无法与g+链接+;,c++,qt,C++,Qt,大家好,这是我第一次在这里提问 我试图用G++编译简单的QtC++代码,但每次给我: C:\Users\ctw\AppData\Local\Temp\ccrszXqF.o:main.cpp:(.text+0x32): undefined reference to `_imp___ZN12QApplicationC1ERiPPci' C:\Users\ctw\AppData\Local\Temp\ccrszXqF.o:main.cpp:(.text+0x6e): undefined referen

大家好,这是我第一次在这里提问

我试图用G++编译简单的QtC++代码,但每次给我:

C:\Users\ctw\AppData\Local\Temp\ccrszXqF.o:main.cpp:(.text+0x32): undefined reference to `_imp___ZN12QApplicationC1ERiPPci'
C:\Users\ctw\AppData\Local\Temp\ccrszXqF.o:main.cpp:(.text+0x6e): undefined reference to `_imp___ZN11QPushButtonC1ERK7QStringP7QWidget'
C:\Users\ctw\AppData\Local\Temp\ccrszXqF.o:main.cpp:(.text+0xa6): undefined reference to `_imp___ZN7QWidget4showEv'
C:\Users\ctw\AppData\Local\Temp\ccrszXqF.o:main.cpp:(.text+0xad): undefined reference to `_imp___ZN12QApplication4execEv'
C:\Users\ctw\AppData\Local\Temp\ccrszXqF.o:main.cpp:(.text+0xbb): undefined reference to `_imp___ZN12QApplicationD1Ev'
C:\Users\ctw\AppData\Local\Temp\ccrszXqF.o:main.cpp:(.text+0xe9): undefined reference to `_imp___ZN12QApplicationD1Ev'
C:\Users\ctw\AppData\Local\Temp\ccrszXqF.o:main.cpp:(.text$_ZN7QStringC1EPKc[__ZN7QStringC1EPKc]+0x2c): undefined reference to `_imp___ZN7QString16fromAscii_helperEPKci'
C:\Users\ctw\AppData\Local\Temp\ccrszXqF.o:main.cpp:(.text$_ZN7QWidget6resizeEii[__ZN7QWidget6resizeEii]+0x2f): undefined reference to `_imp___ZN7QWidget6resizeERK5QSize'
C:\Users\ctw\AppData\Local\Temp\ccrszXqF.o:main.cpp:(.text$_ZN15QTypedArrayDataItE10deallocateEP10QArrayData[__ZN15QTypedArrayDataItE10deallocateEP10QArrayData]+0x1d): undefined reference to `_imp___ZN10QArrayData10deallocateEPS_jj'
compile命令是:

g++ -o main.exe  main.cpp C:\Qt_\5.0.2\msvc2010\lib\Qt5Core.lib C:\Qt_\5.0.2\msvc2010\lib\Qt5Core.lib
我试图编译的代码是:

#include <QtWidgets/qapplication.h>
#include <QtWidgets/qpushbutton>
int main(int argc, char *argv[])
{
     QApplication app(argc, argv);
     QPushButton *hello = new QPushButton("This is a simple button");
     hello->resize(100, 30);
     hello->show();
     return app.exec();
}

我使用的是Qt5.0.2 32位。我是C++初学者,我用这个问题解决了大约一个星期。有谁能告诉我要成功编译应该做什么吗?

对于您的问题,您需要使用Qt-libs的“MinGW”版本。实际上,您只能使用VisualStudio2010编译器编译您的项目

您可以在此处找到正确的LIB:


此外,您还需要MinGW 4.7。

除非您有理由不升级您的Qt Instalationo,否则请这样做,5.0.2确实很旧而且有缺陷,我们现在是5.8版。 现在,解决你的问题:

您正在尝试使用不同的编译器编译应用程序,请参见,您的Qt是使用Visual Studio编译的(您可以通过尝试手动链接的库的路径来判断这一点)

另一件事,Qt文件通常在发送到编译器之前会进入预处理状态,我知道您的特定代码还没有出现此错误,但一旦您增加代码大小,您就会遇到此问题,因此请使用了解Qt内部结构的项目经理,如qmake、qbs或CMake(我更喜欢后者),这将选择正确的Qt工具包并在编译应用程序之前运行moc


最后一件事,如果您使用Qt的visualstudio版本,则需要使用cl编译器而不是Gcc来编译它。如果下载Qt安装程序,它会询问您是否有mingw版本(随g++)或visual studio版本。

使用Microsoft编译器和gcc编译的libs肯定不起作用。msvc2010是指Microsoft visual c编译器的2010版本。由于LIBS使用C++接口,所以需要使用相同的编译器。@ PaulR。谢谢你回答我。我将用那个编译器编译它。用
g++-o main.exe main.cpp-LC:\Qt\u5.0.2\msvc2010\lib\Qt5Core.lib-LC:\Qt\u5.0.2\msvc2010\lib\Qt5Core.lib
@OnurTuna
-L
指定一个目录,而不是库文件。@aschepler确定给出库的路径
g++ (GCC) 5.3.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.