C++ Qt无法与g+链接+;
大家好,这是我第一次在这里提问 我试图用G++编译简单的QtC++代码,但每次给我: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
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.