Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.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++ Qt5链接错误_C++_Linux_Gcc_Qt5 - Fatal编程技术网

C++ Qt5链接错误

C++ Qt5链接错误,c++,linux,gcc,qt5,C++,Linux,Gcc,Qt5,我刚刚在我的系统(LinuxMintPetra)上安装了Qt5,方法是安装软件包Qt5 default。 我有一个简单的.ui文件和一个main.cpp。 使用uic,我可以将.ui文件转换为.h文件,该文件包含在main.cpp中。到现在为止没问题 我运行qmake-project,qmake和make。 编译很好,我明白了。 但是链接给了我一堆“未定义的引用…” 所以,我查了图书馆。 这是链接器调用: g++ -m64 -Wl,-O1 -o qttest main.o -L/usr/X1

我刚刚在我的系统(LinuxMintPetra)上安装了Qt5,方法是安装软件包Qt5 default。 我有一个简单的.ui文件和一个main.cpp。 使用uic,我可以将.ui文件转换为.h文件,该文件包含在main.cpp中。到现在为止没问题

我运行qmake-project,qmake和make。 编译很好,我明白了。 但是链接给了我一堆“未定义的引用…”

所以,我查了图书馆。 这是链接器调用:

g++ -m64 -Wl,-O1 -o qttest main.o   -L/usr/X11R6/lib64 -lQt5Gui -L/usr/lib/x86_64-linux-gnu -lQt5Core -lGL -lpthread
好的,所以我搜索了图书馆。 据我所知,参数-lQt5Core强制链接器在使用-L选项指定的目录中查找名为libQt5Core.a的文件。 但是,此文件夹仅包含libQt5core.so。其他需要的库也是如此。 据我所知,.a文件用于静态链接,而.a文件用于动态链接

现在,我该如何继续?我应该在互联网上搜索图书馆吗? 为什么qmake会生成一个makefile来尝试静态链接? 我丢了一些包裹吗? 我从来没有动态链接过。我必须添加代码来加载。那么? 我觉得静态链接作为第一步更容易

致意

使用uic,我可以将.ui文件转换为.h文件

不,你应该让你的建筑系统来做。也就是说,在
.pro
文件中使用
表单
变量。或者,您是否愿意在每次触摸
.ui
时手动重新运行uic

据我所知,参数-lQt5Core强制链接器在使用-L选项指定的目录中查找名为libQt5Core.a的文件。但是,此文件夹仅包含libQt5core.so。其他需要的库也是如此。据我所知,.a文件用于静态链接,而.a文件用于动态链接

这只是故事的一半。在支持共享库的系统(即所有现代系统)上,GNU ld将首先查找共享库(即
.so
),只有在找不到共享库时,才会查找静态库(
.a

无论如何,那不是你的问题。您的问题是,您正在使用
.ui
文件,即小部件,并且您没有告诉qmake您想要QtWidgets库,因为链接器的命令行中没有
-lQtWidgets

解决方案:添加

QT += widgets
在.pro文件中,重新运行qmake,make,就这样

使用uic,我可以将.ui文件转换为.h文件

不,你应该让你的建筑系统来做。也就是说,在
.pro
文件中使用
表单
变量。或者,您是否愿意在每次触摸
.ui
时手动重新运行uic

据我所知,参数-lQt5Core强制链接器在使用-L选项指定的目录中查找名为libQt5Core.a的文件。但是,此文件夹仅包含libQt5core.so。其他需要的库也是如此。据我所知,.a文件用于静态链接,而.a文件用于动态链接

这只是故事的一半。在支持共享库的系统(即所有现代系统)上,GNU ld将首先查找共享库(即
.so
),只有在找不到共享库时,才会查找静态库(
.a

无论如何,那不是你的问题。您的问题是,您正在使用
.ui
文件,即小部件,并且您没有告诉qmake您想要QtWidgets库,因为链接器的命令行中没有
-lQtWidgets

解决方案:添加

QT += widgets
在.pro文件中,重新运行qmake,make,就这样

使用uic,我可以将.ui文件转换为.h文件

不,你应该让你的建筑系统来做。也就是说,在
.pro
文件中使用
表单
变量。或者,您是否愿意在每次触摸
.ui
时手动重新运行uic

据我所知,参数-lQt5Core强制链接器在使用-L选项指定的目录中查找名为libQt5Core.a的文件。但是,此文件夹仅包含libQt5core.so。其他需要的库也是如此。据我所知,.a文件用于静态链接,而.a文件用于动态链接

这只是故事的一半。在支持共享库的系统(即所有现代系统)上,GNU ld将首先查找共享库(即
.so
),只有在找不到共享库时,才会查找静态库(
.a

无论如何,那不是你的问题。您的问题是,您正在使用
.ui
文件,即小部件,并且您没有告诉qmake您想要QtWidgets库,因为链接器的命令行中没有
-lQtWidgets

解决方案:添加

QT += widgets
在.pro文件中,重新运行qmake,make,就这样

使用uic,我可以将.ui文件转换为.h文件

不,你应该让你的建筑系统来做。也就是说,在
.pro
文件中使用
表单
变量。或者,您是否愿意在每次触摸
.ui
时手动重新运行uic

据我所知,参数-lQt5Core强制链接器在使用-L选项指定的目录中查找名为libQt5Core.a的文件。但是,此文件夹仅包含libQt5core.so。其他需要的库也是如此。据我所知,.a文件用于静态链接,而.a文件用于动态链接

这只是故事的一半。在支持共享库的系统(即所有现代系统)上,GNU ld将首先查找共享库(即
.so
),只有在找不到共享库时,才会查找静态库(
.a

无论如何,那不是你的问题。您的问题是您正在使用
.ui
文件,即小部件,并且您没有告诉qmake您想要qtwidts库,因为在qmake中没有
-lqtwidts