QT5链接错误(Qt5 linking error)

2019-11-03 04:54发布

我刚才通过安装包QT5默认安装在我的系统(Linux Mint的佩特拉)上QT5。 我有一个简单的.ui文件和main.cpp中。 使用UIC,我可以在我的.ui文件转换成.h文件,它是由包括main.cpp的。 没问题,到现在为止。

我运行的qmake -project,qmake的做出。 编译就好了,我得到main.o. 但联给了我一堆“未定义的引用...”。

所以,我查库。 这是连接电话:

g++ -m64 -Wl,-O1 -o qttest main.o   -L/usr/X11R6/lib64 -lQt5Gui -L/usr/lib/x86_64-linux-gnu -lQt5Core -lGL -lpthread

好了,我搜索的库。 据我所知,-lQt5Core强制链接的参数,以寻找与名称libQt5Core.a文件,在使用-L选项指定的目录。 然而,仅此文件夹包含libQt5core.so。 与其他所需的库同样的事情。 据我所知,.a文件是静态链接。所以是动态链接。

现在,我应该如何着手? 我应该在互联网上搜索以.a库? 为什么QMAKE产生它试图使静态链接生成文件? 我丢失了一些包? 我还没有过动态链接。 我一定要为装载的.so添加代码? 我有一种感觉静态链接是作为第一步,更容易。

最好的祝福

Answer 1:

使用UIC,我可以在我的.ui文件转换成.h文件

不,你应该让你的编译系统做到这一点。 即使用FORMS在变量.pro文件。 或者你愿意UIC手动每次重新运行你触摸你.ui

据我所知,-lQt5Core强制链接的参数,以寻找与名称libQt5Core.a文件,在使用-L选项指定的目录。 然而,仅此文件夹包含libQt5core.so。 与其他所需的库同样的事情。 据我所知,.a文件是静态链接。所以是动态链接。

这只是故事的一半。 在支持共享库(即所有现代系统)系统,GNU LD先来看看共享库(即.so ),且仅当未找到共享库,然后它会到处寻找静态库( .a ) 。

总之,这不是你的问题。 你的问题是,你正在使用.ui文件,也就是,窗口小部件,而你没有告诉你想要的QtWidgets库QMAKE,因为没有-lQtWidgets在链接器的命令行。

解决方案:加

QT += widgets

你的.pro文件,重新运行QMAKE,制作,仅此而已。



文章来源: Qt5 linking error
标签: c++ linux gcc qt5