【发布时间】:2012-01-15 01:49:29
【问题描述】:
当我发布我的Qt 项目时,我想将QtCore4.dll 和QtGui4.dll 文件与我的项目一起重新分发,但不在与我的.exe 相同的目录中(在其他一些相对路径中)。
如何让我的.exe 自动找到它们?
我也不想在客户的环境中设置%PATH% 或任何其他环境变量。
【问题讨论】:
标签: windows qt dll dynamic path
当我发布我的Qt 项目时,我想将QtCore4.dll 和QtGui4.dll 文件与我的项目一起重新分发,但不在与我的.exe 相同的目录中(在其他一些相对路径中)。
如何让我的.exe 自动找到它们?
我也不想在客户的环境中设置%PATH% 或任何其他环境变量。
【问题讨论】:
标签: windows qt dll dynamic path
首先,您应该重新考虑不要更改客户环境中的 PATH:许多项目/应用程序都会这样做,因此您应该将其视为一个真正的选择。
其次,最好的方法似乎是编辑与可执行文件位于同一文件夹中的qt.conf 文件。有关编辑 qt.conf 文件的更多信息,请参阅 this link。
【讨论】:
可能最安全的方法是在启动您的应用程序之前使用一个确实更改PATH(但仅限于该会话)的脚本来启动您的应用程序。这是我用来启动Qt Creator 的自定义版本的脚本:
set PATH=%PATH%;C:\Qt\qt474_custom_msvc2008_x64\lib;C:\Qt\jom
start C:\Qt\qtcreator231__custom_msvc2008_x64\bin\qtcreator.exe
我认为还有其他选择,例如 SetDllDirectory,但是(就像 *nix 上的 rpath),它们引入了其他问题。并行 dll 或更改 PATH 似乎是最稳定的解决方案。
另外,您的意思是要部署这些 dll 的调试版本(QtCore*d*4.dll 等)吗?这将是非常不寻常的——确保您使用发行版。 (当然,除非您有使用调试版本的正当理由。)
【讨论】: