我需要分发Qt应用程序,我需要哪些dll文件?

3
我制作了一个Qt应用程序,希望将其分发给一些人。在安装了QtCreator的计算机上,我可以通过将一堆Qt dll文件(我插入了它抱怨的dll)放置在可执行文件相同的文件夹内来运行它。但是如果我卸载了Qt或在没有Qt的计算机上运行它,该可执行文件什么都不会发生。没有任何错误提示,只是运行时没有窗口或进程出现。
我尝试过以下方法: - 将qt文件夹中的每个dll文件与可执行文件放在一起。但没有效果。 - 使用依赖性检查器来运行它。我不确定我是否使用正确,但是即使在卸载了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位版本使用依赖项检查器)。

我是否遗漏了某些步骤?

1个回答

1
我发现您需要在安装文件夹中的插件子目录中添加一些插件dll的子目录(其中包括include和bin文件夹)。
特别是需要gui的platforms子目录以及其中的qminimale.dllwindows.dll
编辑:要清楚地说明,在exe目录下添加一个名为platforms的子目录,并将qminimale.dllwindows.dll添加到该子目录中。

谢谢,现在它可以运行了。但是数据库功能还没有生效。它使用的是sqlite。我已经添加了一个包含所有包含“sql”的dll的sqldrivers子目录,但仍然不起作用。 - DanielST
没事了,我用的是64位的qsqlite.dll而不是32位的。依赖项查看器终究还是有用的。 - DanielST
另外,应该是 qwindows.dll 而不是 windows.dll。 - DanielST
有人能解释一下这在文档中的详细信息在哪里吗?我也遇到了同样的问题,但是没有qminimale.dll(不过我有qminimal.dll)。 - gollumullog

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接