24,855
社区成员
发帖
与我相关
我的任务
分享
QT发布的程序,exe可执行程序与dll文件都在同一个目录下,我现在想把那些dll文件,放到一个文件夹下,这个文件夹和exe在同一个目录下,这样应该怎么做?
望各位路过的大神指点一下
当前时间:2022年6月16日
时隔多年,再次回到这个帖子。
最近在学习编译QGis源码,发现他的一个方法解决了上述问题。win下可以使用_putenv函数,更改当前进程的环境变量。
参见QGis -> qgis子项目 -> mainwin.cpp ->WinMain()
用法:
//exe_env配置文件:
//path=依赖的dll路径1;依赖的dll路径2
int main()
{
1、for (var, 逐行读取exe_env配置文件)
{
2、_putenv(var);
}
3、业务代码
...
return 0;
}
QCoreApplication::addLibraryPath("./test");
#include "mainwindow.h"
#include <QApplication>
#include "Windows.h"
int main(int argc, char *argv[])
{
QString s = "./DB";
LPCWSTR path = s.toStdWString().c_str();
SetDllDirectory(path);
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
1 延迟加载dll,exe运行时,先使用SetDllDirectory。
2 使用另外的exe启动,先设置PATH
这是两种方法还是一个方法两个步骤呢?
还有怎么延迟加载dll呢?