qt编译生成的exe程序在打包依赖文件后,如果同时又有其他dll文件时,目录会看起来非常杂乱。我们可以通过将依赖文件放到某个路径下,让exe程序在指定路径下加载,此时需要用到qt 的qt.conf文件来处理。
qt.conf是一个配置文件,使用它可以让程序重新指定加载路径。在程序中使用QLibraryInfo类调用qt.conf文件,包含三种方式(具体参考qt 手册),我们这里使用资源文件的调用方式,资源文件的路径必须在":/qt/etc/qt.conf"下。
1. 新建qt.conf文件
新建一个qt.conf文件跟代码路径放置在同一个目录下,下面是qt.conf文件的内容:
[Paths]
Prefix = ./libs
ArchData = .
Data = .
Libraries = .
LibraryExecutables = .
Binaries = .
Plugins = .
Imports = .
Qml2Imports = .
Translations = translations
“Prefix = ”后面的内容为exe需要加载库的路径,我这个示例是在exe路径新建一个“libs”路径。
2. 在工程文件中新建资源文件,将qt.conf包含进去。
(1)右键点击工程文件,选择"Add New…",选择Qt->Qt Resource File,添加新的资源文件
(2)给资源文件命名,我这里叫"config",生成资源文件。
(3)给config.rec添加前缀。注意这里前缀要使用"/qt/etc"这个名称。
(4) 将qt.conf文件添加至资源文件中,如需要修改qt.conf配置,点击该文件进行修改。
3. 执行qmake后,编译生成exe文件。
4. 使用qt套件中的打包工具,复制依赖文件到运行目录下。
(1)打开打包工具 qt 5.12.1(MSVC 2017 64-bit)。
(2)输入"windeployqt XXX.exe"命令,复制依赖文件。
(3)移动刚刚复制依赖文件到"libs’'文件夹下。
5. 测试exe调用DLL
双击exe程序测试执行效果
成功则不会再有提示找不到依赖文件