【问题标题】:What dlls do i need to distribute my Qt application?我需要哪些 dll 来分发我的 Qt 应用程序?
【发布时间】:2013-11-13 20:20:47
【问题描述】:

我构建了一个 Qt 应用程序,我想将它分发给几个人。 在安装了 QtCreator 的计算机上,我可以通过将一堆 Qt dll(我插入了它抱怨的那些)与可执行文件放在同一个文件夹中来运行它。但是,如果我卸载 Qt 或在没有 Qt 的计算机上尝试它,可执行文件不会执行任何操作。没有错误,只是运行时没有窗口或进程。

这是我尝试过的:

- 将 qt 文件夹中的每个 dll 放入可执行文件中。没有效果。

- 使用依赖walker 运行它。我不完全确定我是否正确使用了它,但是在卸载 Qt 并带有可执行文件的必要 dll 后,它不会给我任何丢失或无效的模块。分析后,记录器中只有几条红线:

GetProcAddress(0x75AC0000 [KERNEL32.DLL], "SetDefaultDllDirectories") called from "MSVCR110.DLL" at address 0x6AC0FD4F and returned NULL. Error: The specified procedure could not be found (127).

GetProcAddress(0x75AC0000 [KERNEL32.DLL], "GetCurrentPackageId") called from "MSVCR110.DLL" at address 0x6AC0FDFA and returned NULL. Error: The specified procedure could not be found (127).

与 qt 没有任何关系。

我正在使用 32 位 Windows 7 的虚拟机(试图模拟非开发机器)上进行测试。安装了 MSVC redist 2010 和 2012。 它是 Qt 5.1.0 MSCV2012-32bit。而且我在 64 位版本上也有同样的问题(虽然我没有在 64 位版本上使用过依赖walker)。

我是否缺少某些步骤?

【问题讨论】:

    标签: c++ qt dll


    【解决方案1】:

    我发现您需要添加一个子目录,其中包含安装文件夹的 plugin 子目录中的一些插件 dll(您可以在其中找到 include 和 bin 文件夹)

    尤其是platforms 子目录和其中的qminimale.dllwindows.dll 是gui 所需要的

    编辑:明确添加一个子目录平台到带有exe的目录中,并添加qminimale.dllwindows.dll到它

    【讨论】:

    • 谢谢,它现在可以运行了。数据库功能现在不起作用。是sqlite。我添加了一个 sqldrivers 子目录,其中包含所有包含“sql”的 dll,但这也不起作用。
    • Nvm,我有 64 位的 qsqlite.dll 而不是 32 位的。毕竟,Dependency walker 被证明是有用的。
    • 另外,应该是 qwindows.dll 而不是 windows.dll
    • 有人能解释一下文档中详细说明的地方吗?我也有同样的问题,但没有 qminimale.dll(我确实有 qminimal.dll)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多