繁体   English   中英

Qt无法与g ++链接

[英]Qt cannot linking with g++

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

我试图用g ++编译简单的Qt c ++代码,但是每次它给我:

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'

编译命令为:

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();
}

g ++的版本为:

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.

我正在使用Qt 5.0.2 32bit。 我是C ++的初学者,因此尝试解决了大约一周的时间。 谁能告诉我应该怎么做才能成功编译?

除非您有理由不升级您的Qt安装,否则请这样做,因为5.0.2确实是旧的并且有错误,我们现在的版本是5.8。 现在,解决您的问题:

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

另一件事,Qt的文件通常传递给预处理状态发送到编译器之前,我知道你的特定代码没有这个错误还没有 ,但只要你增加代码大小,你会打的,所以使用了解Qt内部知识的项目经理,例如qmake,qbs或CMake(我更喜欢后者),这将选择正确的Qt套件并在编译应用程序之前运行moc。

最后,如果使用Visual Studio版本的Qt,则需要使用cl编译器而不是Gcc进行编译。 如果您下载Qt Installer,它将询问您是否具有mingw版本(g ++随附)或Visual Studio版本。

对于您的问题,您需要使用Qt库的“ MinGW”版本。 实际上,您只能使用Visual Studio 2010编译器来编译项目。

您可以在此处找到正确的库: Qt 5.0.2存档

另外,您将需要MinGW 4.7。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM