我是Qt开发环境中的新手,我部署了一个小型Qt应用程序(发布版本),我还在与 .exe 文件相同的目录级别复制了必要的dll以及一个名为 platforms 的单独文件夹,用于特定于平台的dll。现在程序运行正常。
但我想将dll保存在一个单独的子文件夹中。
我在此问题上找到的大多数搜索结果都为第三方dll提供了解决方案。并特别提到创建插件子目录,但我试图移动 Qt5core.dll , Qt5Gui.dll , Qt5Widgets。 dll 和 icu dll 位于一个单独的位置(在应用程序目录中)。
据我所知,该程序在与 .exe 文件相同的目录级别中搜索必要的dll。
那么,如何设置 dll 的相对路径呢?目录结构如下所示:
appDirectory/app.exe
appDirectory/lib/all_necessary_dlls
appDirectory/platforms/platform_specific_dll
我一直在搜索Qt论坛和SO很长时间但是失败了 找到满意的答案。
答案 0 :(得分:1)
Qt dll文件在程序启动时静态加载,这意味着Windows将首先在app目录中查找%PATH%
环境变量中包含的每个目录。
所以,为了从子目录加载它们,我能想到的唯一方法是在启动程序之前将子目录添加到%PATH%
环境变量中(可能在安装过程中或其他时候),但是这根本不是干净的方式。
但你为什么要这样做呢?
如果您不喜欢随应用程序一起分发的dll文件,则始终可以选择静态链接(但请确保在使用时不要破坏许可证)。
答案 1 :(得分:0)
默认情况下,它在.pro文件中提到的父目录中搜索。如果在.pro文件中进行必要的更改然后编译它将开始采用相对路径。