3

我构建了一个 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 位版本上使用过依赖遍历器)。

我错过了一些步骤吗?

4

1 回答 1

1

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

特别是gui 需要platforms子目录和其中的qminimale.dllandwindows.dll

编辑:要清楚地添加一个子目录platforms到带有exe的目录中,并将and添加qminimale.dllwindows.dll

于 2013-11-02T22:27:46.337 回答