在发布程序给用户使用的时候通常要将exe依赖的动态链接库也打包给用户,以防用户电脑没有相应链接库而出错。查看程序依赖项可以用VS自带的dumpbin,本人按照默认路径装的VS2019,其路径如下:
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.22.27905\bin\Hostx64\x64
将其加入环境变量
用如下命令查看:
dumpbin.exe /imports .\rtsp7player.exe
或者将依赖项输出到记录文件:
dumpbin /imports .\rtsp7player.exe >dllsave.txt
完成上述操作就可以看到程序依赖的所有dll了,不过因为打印的东西有点多,看着不太直观,可用如下代码对输出的“dllsave.txt”文件进行整理(因为最近在看QT,就用QT实现了一个)
#include <QtCore/QCoreApplication>
#include <QFile>//文件IO头文件
#include <QTextStream>//文件流头文件
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile file("dllsave.txt");//文件对象
if (!file.exists())
{
printf("文件不存在");
return 0;
}
if (!file.open(QIODevice::ReadOnly| QIODevice::Text))//以只读和文本方式打开文件
{
printf("文件打开失败");
return 0;
}
QTextStream stream(&file);//用文本流提取文件
stream.setAutoDetectUnicode(true);//自动检测Unicode,这样可以正常读取中文,不出现乱码
QString readline;
while (!stream.atEnd())
{
readline = stream.readLine();//读取一行数据
if (readline.contains(".dll"))//字符串中包含字符
{
printf("%s\n", readline.toStdString().data());//将读取对象打印出来
}
}
file.close();
return a.exec();
}
有了这份文件,我们可以通过everything来找到对应的dll,再打包进程序就OK了。