c++ - 编译 Qt 项目并包含 Qt 库

标签 c++ qt qt5

我有一个使用 Qt 的 C++ 项目,我让它按预期工作。但是,问题是当我复制 将可执行文件转换为操作系统(例如 Windows 或 Linux)的标准安装 在执行时我收到 QtWidgets 或其他一些 Qt 库丢失错误。

我尝试引用 Qt 文档,但找不到解决方案或我所追求的示例。它与静态和动态构建有关...但找不到好的示例或教程。

我看了教程http://www.qtcentre.org/wiki/index.php?title=Deploying_Qt_Applications但这并不是最有效的解决方案。

基本上我希望系统包含所需的 Qt 库以及最终编译的文件。我怎样才能成功?

最佳答案

您可以做的是制作一个脚本,将您的 DLL(或 .so* 文件)复制到可执行文件夹中。一旦你在你的项目文件中添加一个额外的 Makefile 目标:

项目.pro:

OTHER_FILES += copy.script    # Assuming your copy script is called "copy.script" 
deploylibs.target = deploylibs
deploylibs.command = ./copy.script    # Launching the script

QMAKE_EXTRA_TARGETS += deploylibs

现在您可以使用 (n)make deploylibs 命令部署您的库。

注意:有一个名为“Dependency Walker”的非常有用的工具可以找到您需要的 DLL。它仅适用于 Windows。对于 Linux 及其 *.so* 文件,您可以使用 ldd 命令:

>$: ldd theexecutable
    alib.so => /path/to/library/on/your/computer.so
...

关于c++ - 编译 Qt 项目并包含 Qt 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19375292/

相关文章:

c++ - QT中子UI窗口打开时如何关闭父UI窗口

qt - 从 TabView 获取事件 Tab 并更改项目属性

c++ - 为什么编译器在这个 const 函数重载问题上不更聪明?

C++11 基于范围的 for 循环 : how to ignore value?

c++ - C++ 运行时系统如何知道对象何时超出范围

qt - ComboBox 禁用特定索引处的项目

c++ - cmake 找不到 qt 5.1.1

c++ - 带有 gcc 7.3 的 __atomic_fetch_or 的意外 x64 程序集

c++ - 'QObject::QObject' 无法访问在类 'QObject' 中声明的私有(private)成员

qt - 具有作用域枚举的 QFlags 的相等运算符