Qt5链接错误
Qt5 linking error
我刚刚通过安装Qt5 -default包在我的系统(linux mint petra)上安装了Qt5。我有一个简单的。ui文件和一个main.cpp。使用uic,我可以将.ui文件转换为.h文件,该文件包含在main.cpp中。到现在为止没有问题。
我运行qmake -project, qmake和make。编译很好,我得到main。0。但是链接给了我一堆"未定义的引用…"。
所以,我检查了库。这是链接器调用:
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文件用于静态链接,.so文件用于动态链接。
现在,我该怎么做呢?我应该在网上搜索一个。a图书馆吗?为什么qmake生成一个makefile,它尝试静态链接?我是不是少了一些包裹?我从来没有动态链接过。我必须添加代码来加载。so吗?我觉得静态链接作为第一步更容易。
使用uic,我可以把我的。ui文件转换成。h文件
不,你应该让你的构建系统这样做。例如,在.pro
文件中使用FORMS
变量。或者你愿意每次触摸.ui
时手动重新运行uic吗?
据我所知,参数-lQt5Core强制链接器查找名为libQt5Core的文件。a,在使用-L选项指定的目录中。但是,这个文件夹只包含libQt5core.so。其他需要的库也是如此。据我所知,.a文件用于静态链接,.so文件用于动态链接。
这只是故事的一半。在支持共享库的系统(即所有现代系统)上,GNU将首先查找共享库(即.so
),只有当没有找到共享库时,它才会查找静态库(.a
)。
.ui
文件,也就是小部件,并且你没有告诉qmake你想要QtWidgets库,因为在链接器的命令行中没有-lQtWidgets
。
解决方案:加
QT += widgets
到你的。pro文件,重新运行qmake, make,就是这样。
- Netbeans 10:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- CMake 错误:链接器命令失败,退出代码为 1 和 cpp.o 文件
- clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) - 体系结构的未定义符号 x86_64:
- 如何修复 clang: 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- Android NDK.Build命令失败.未定义的引用.clang++:错误:链接器命令失败,退出代码为1
- 使用cmake错误链接boost日志
- 错误:链接器命令失败,退出代码为 1(使用 -v 查看调用):在 Macbook 上
- C++ XCODE ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -
- clang:错误:链接器命令失败,C++代码中的退出代码为 1(使用 -v 查看调用)
- 静态库中的 g++ 错误链接函数
- 未定义的参考错误链接天然函数Android
- C++编译错误:ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v
- QT Q_PROPERTY错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- ld:找不到体系结构x86_64 clang 的符号:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)
- OSX MOJAVE -LD:架构X86_64 clang找不到符号:错误:链接器命令失败,出口代码1
- C 错误链接器命令失败了出口代码1(使用-V查看调用)
- LD:架构x86_64 clang找不到符号:错误:链接器命令失败,出口代码1(使用-v to See
- 聚输出错误 - 链接列表
- Xcode链接器错误:链接器命令失败,退出代码为1(使用-v查看调用)
- 尝试构建C DLIB示例无法与数百个未定义的参考错误链接