我正在使用Qt 5.3构建一个应用程序,我想在一台没有安装Qt库的机器上运行这个应用程序。我知道我必须将Qt所需的DLL放在可执行文件夹中以避免依赖性崩溃,因为我在运行时链接到它们(我使用的是默认的Qt构建设置)。我不想改变客户机的环境变量(我不想改变"路径"变量),但我想把Qt库放在里面我的应用程序的子目录。 例如:
如果我的应用程序目录是C:\myApp\
,我想在C:\myApp\QtLibs
中放置我的Qt DLL(QtCore,QtNetwork等)。
有没有办法实现呢?
答案 0 :(得分:2)
不幸的是,在Windows上没有简单的方法可以做到这一点。 Windows有predefined个搜索路径。一个丑陋但简单的解决方案是使用.bat / .cmd脚本或其他可执行文件来运行带有更改的PATH
环境变量的Qt应用程序。
还有另一种hacky方法可以使用LoadLibrary或LoadLibraryEx手动加载所有库。然后可以使用SetDllDirectory调整库搜索路径。
答案 1 :(得分:1)
这不是问题!只需使用这样的代码:
#ifndef _DEBUG
foreach (const QString path, app.libraryPaths())
app.removeLibraryPath(path);
app.setLibraryPaths(QStringList() << app.applicationDirPath()
<< (QString("%1/Plugins").arg(app.applicationDirPath())));
#else
app.setLibraryPaths(app.libraryPaths() << QString("%1/Plugins").arg(app.applicationDirPath()));
#endif
将代码放在main()函数
中