我正在与C++合作进行一个项目,并使用Qt框架来帮助我。但是,我正在处理一些烦人的问题,希望有人可以在这里帮助我。这是我到目前为止所拥有的"
- 我使用 Qt 创建了我的C++应用程序
- 编译了我的应用程序并发送了最终的.exe文件
我还安装了一个单独的非开发操作系统来测试我的应用程序。在测试操作系统上,我只需要安装 Qt 库,我的应用程序就可以正常运行。
但是我的应用程序的某些用户在运行应用程序时遇到问题。他们中的一些人安装了Qt,但应用程序仍然找不到所需的.dll文件,或者如果他们安装了Qt,应用程序仍然失败,因为Qt本身有一些其他依赖项。或者它们在 64 位上,但我的应用程序是 32 位的......所以他们的 64 位 Qt 库不适用于我的应用程序。
因此,我正在考虑做的基本上是获取我的应用程序顺利运行所需的所有.dll文件的树,并将所有这些文件作为我的.exe应用程序的一部分包含在内。
当然,文件大小会增加,但至少我会放心,因为该应用程序拥有所需的一切。
我正在阅读更多关于静态/动态链接等的信息......但在C++世界中,它有点不同。C++中是否有类似于Java的系统,您可以在其中指定库,并在编译期间C++将必要的库复制到最终产品中?
依赖 walker 也会向你显示传递它们所需的所有 DLL
人们通常为此使用打包程序,您还可以使用它设置环境变量并摆弄注册表
你应该把Qt DLL放在可执行文件的发布版本上。它们是QtCore4.dll,QtGui4.dll(Qt5Core.dll,Qt5Gui.dll,...对于 Qt5),可能还有您使用过的其他模块。这些dll文件位于bin文件夹中已安装的Qt目录中。
您还应该放置 msvcr100.dll 和 msvcp100.dll以防您使用MSVS2010。
如果您使用的是插件,则应将它们的dll放在exe旁边的名为"plugins"的文件夹中。在使用图标和图像的情况下,您应该将他们的dll(如qico4.dll和qsvg4.dll(qco.dll和qsvg.dll用于Qt5)放在名为"imageformat"的文件夹中。