将Qt DLL保存在单独的文件夹中



我是Qt开发环境的新手,我部署了一个小型Qt应用程序(发布版本),我还复制了与.exe文件相同的目录级别中的必要dll,并为平台特定的dll复制了一个名为平台的单独文件夹。现在程序运行良好。

但是我想将dll保存在单独的子文件夹中。

我在此问题上找到的大多数搜索结果都为第三方dll提供了解决方案。并特别提到创建一个插件子目录,但我正在尝试将Qt5core.dll,Qt5Gui.dll,Qt5Widget.dll sicudlls移动到一个单独的位置(当然在应用程序目录中)。

据我了解,该程序在与.exe文件相同的目录级别中搜索必要的dll。

那么,如何设置dll的相对路径呢?目录结构如下所示:

appDirectory/app.exe
appDirectory/lib/all_necessary_dlls
appDirectory/platforms/platform_specific_dll

我一直在搜索Qt论坛和SO很长时间,但失败了 找到一个令人满意的答案。

Qt dll文件在程序启动时静态加载,这意味着Windows将首先在应用程序目录中查找,然后在%PATH%环境变量中包含的每个目录中查找。

因此,为了从子目录加载它们,我能想到的唯一方法是在启动程序之前(可能在安装或其他过程中)将您的子目录添加到%PATH%环境变量中,但这根本不是一种干净的方法。

但是你为什么还要这样做呢?

如果您不喜欢与应用程序一起分发的 DLL 文件,则始终可以选择静态链接(但请确保在使用时不会破坏许可证)。

默认情况下,它在父目录中的搜索就像它在.pro文件中提到的那样。如果您在 .pro 文件中进行必要的更改,然后编译它将开始采用相对路径。

相关内容

  • 没有找到相关文章

最新更新