分发我的Qt应用程序需要哪些dll?

时间:2013-11-02 21:18:08

标签: c++ qt dll

我构建了一个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)。

我缺少一些步骤吗?

1 个答案:

答案 0 :(得分:1)

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

特别是platforms子目录以及gui需要qminimale.dllwindows.dll

编辑:要明确将子目录平台添加到包含exe的目录中,并将qminimale.dllwindows.dll添加到其中