发布程序前获得所有依赖库的问题处理方案

先说最终可行的方案:下载procexp.exe,在vs环境下启动程序,用procexp.exe查看进程涉及的dll。优先把qt相关的库拷贝到待发布程序所在目录。

选中想要查看句柄或者加载的dll的进程
菜单点击view——Lower Pane View,其下有DLLS和Handles,选中即可。同时,需要勾选Show Lower Pane才能显示出来

背景知识:
最近有一个程序需要发布,开发环境涉及vs2013、qt、matlab、sqlserver、mysql…,
vs2013环境下可以调试运行,但在exe所在目录无法启动。
尝试了多种方法,结果发现是被qt官方程序windeployqt.exe坑了。

为什么说被windeployqt.exe坑了呢?
因为我根据资料,写了以下bat脚本,自动拷贝qt的库

set VCINSTALLDIR=D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\
D:\Qt\Qt5.5.1_64\5.5\msvc2013_64\bin\windeployqt.exe db_view.exe
pause

看起来运行良好,也拷贝了不少qt库。
然后我就以为程序无法独立运行的原因是别的库没拷贝,毕竟用了不止qt一个环境。

用depends.exe查看的是未运行的exe依赖环境,各种图标也不知道什么意思,感觉无从下手。

网上查询报错信息,说是"应用程序无法正常启动0xc000007b的原因是DirectX9.0组件损坏“,
折腾半天没啥用。
后面还根据网上别的方法,折腾了很久。

最终突然想到:是不是存在一种类似depends.exe的程序,但是是专门显示运行状态的进程的相关dll的程序?然后就找到Process Explorer。最终还是靠这个软件找到所有dll。
Process Explorer - Windows Sysinternals | Microsoft Docs
https://docs.microsoft.com/en-us/sysinternals/downloads/process-explorer

猜你喜欢

转载自blog.csdn.net/weixin_43172531/article/details/106634343