exe可执行文件依赖dll查看和打包
在发布程序给用户使用的时候通常要将exe依赖的动态链接库也打包给用户,以防用户电脑没有相应链接库而出错。查看程序依赖项可以用VS自带的dumpbin,本人按照默认路径装的VS2019,其路径如下:
C:Program Files (x86)Microsoft Visual Studio2019CommunityVCToolsMSVC14.22.27905inHostx64x64
将其加入环境变量
用如下命令查看:
dumpbin.exe /imports . tsp7player.exe
或者将依赖项输出到记录文件:
dumpbin /imports . tsp7player.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 ", readline.toStdString().data());//将读取对象打印出来 } } file.close(); return a.exec(); }
有了这份文件,我们可以通过everything来找到对应的dll,再打包进程序就OK了。
下一篇:
Centos7 如何修复grub状态