找到VS生成的exe文件所依赖的dll文件和路径

通过ProcessExplorer查看并解决exe运行时缺少dll的问题,使用Python脚本自动收集并复制dll到同一目录,确保程序执行。ProcessExplorer能显示dll详细信息,配合脚本批量处理依赖,提高效率。
摘要由CSDN通过智能技术生成

使用VS生成的exe文件放在其他电脑上运行时,常常会产生缺少dll的错误,有的时候dll缺失很多,很难找。还有的时候找到的dll是同名文件,依然会报错,例如应用程序无法运行,你压根就不知道哪出问题了。也尝试找了很多方法,比如VS自带的dumpbin 命令,能找到依赖的dll名字,但一个个找也很麻烦,万一找的是同名文件就更烦了。经过谷歌才发现了一个叫做Process Explorer的程序(百度是真的辣鸡),可以找到dll文件并且连路径也有,然后用一个python脚本把这些路径下的dll复制到一个路径下就行了,解决了我的问题。

如下图所示,打开这个程序之后,点击view下得lower pane view,点击dlls,即可以展示dll信息。

在你开发的电脑上打开你的程序,然后在process explorer中找到你的程序,点击你的程序,下方就能展示dll信息,右键path那一行,选择展示的项,只展示path。然后ctrl+s保存为txt文件即可。

此时保存的txt文件包含了process信息和你的程序的dll路径信息,用一个python脚本即可解析出路径并将这些路径下的dll文件复制到你设置的路径下。python脚本如下:

import os
import shutil
import sys


def copy_file(srcfile, dst_path):
    if not os.path.isfile(srcfile):
        print("%s not exist!" % srcfile)
    else:
        path, name = os.path.split(srcfile)
        if not os.path.exists(dst_path):
            os.makedirs(dst_path)
        shutil.copy(srcfile, dst_path + name)
        print("copy %s -> %s" % (srcfile, dst_path + name))


txt_path = ''
dst_path = ''
if len(sys.argv) > 2:
    txt_path = sys.argv[1]
    dst_path = sys.argv[2]

with open(txt_path, 'r', encoding = "utf-8") as f:
    for line in f.readlines():
        print(line)
        file = line.rstrip('\n')
        print(file)
        dst_dir = dst_path + '/'
        copy_file(file, dst_dir)

其中copy_file函数首先判断每一行是否是一个路径,由于前面的信息不是路径,就可以排除掉,然后就采用shutil.copy函数完成复制操作。该脚本有两个参数,一个是你的txt路径,另一个是复制的目标文件夹。

然后exe文件和它所依赖的dll文件就被放在了一起。

Process Explorer的下载地址:process explorer

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值