更改Qt库的路径

时间:2014-07-24 17:33:42

标签: c++ qt path dependencies

我正在使用Qt 5.3构建一个应用程序,我想在一台没有安装Qt库的机器上运行这个应用程序。我知道我必须将Qt所需的DLL放在可执行文件夹中以避免依赖性崩溃,因为我在运行时链接到它们(我使用的是默认的Qt构建设置)。我不想改变客户机的环境变量(我不想改变"路径"变量),但我想把Qt库放在里面我的应用程序的子目录。 例如:

如果我的应用程序目录是C:\myApp\,我想在C:\myApp\QtLibs中放置我的Qt DLL(QtCore,QtNetwork等)。 有没有办法实现呢?

2 个答案:

答案 0 :(得分:2)

不幸的是,在Windows上没有简单的方法可以做到这一点。 Windows有predefined个搜索路径。一个丑陋但简单的解决方案是使用.bat / .cmd脚本或其他可执行文件来运行带有更改的PATH环境变量的Qt应用程序。

还有另一种hacky方法可以使用LoadLibraryLoadLibraryEx手动加载所有库。然后可以使用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()函数