下载了一个绿色软件,双击里面的 dll 文件,Windows 弹出「无法打开此文件」,还问你要不要到应用商店找程序。别急着找工具,dll 本来就不是拿来双击的。
dll 是给程序调用的零件
dll 全称动态链接库,里面是编译好的函数和资源。主程序运行时按需加载它,像工具箱里的一格抽屉。你双击它,系统不知道该执行哪段代码,弹提示很正常。
常见的情况有三种:想看看某个 dll 里有什么、软件报错缺少某个 dll、需要注册 dll 才能让老软件跑起来。三种情况处理方式不一样。
只想查看内容用什么工具
看导出函数,可以用 Visual Studio 自带的 dumpbin,命令是 dumpbin /exports 文件名.dll,要在开发者命令提示符里运行。Dependency Walker 也能看依赖关系,不过它年头久了,打开新系统的大文件容易卡。
.NET 写的 dll 可以用 ILSpy 反编译看结构,注意只用于自己开发或排查问题,别拿别人的库去改界面。
提示缺少 dll 怎么办
先看报错里的文件名,多数是 VC++ 运行库缺失,去微软官网装对应的 Visual C++ Redistributable,x86 和 x64 都要装。不要从下载站随手抓一个同名 dll 丢进 System32,版本不对会引发新的报错,也可能带病毒。
需要注册的情况
老式的 ActiveX 控件才需要注册,管理员身份打开命令提示符,执行 regsvr32 完整路径.dll。成功会弹「已成功」;失败先确认位数是否和程序一致,32 位程序要调 SysWOW64 目录里的 regsvr32.exe。
另外,网上下载的 dll 有 32 位和 64 位之分。程序是 32 位,就得用 32 位的库,混用会报「不是有效的 Win32 应用程序」。拿不准时用 dumpbin /headers 看 machine 字段,x86 对应 32 位,x64 对应 64 位。
dll文件怎么打开这个问题,答案取决于你想干什么:看一眼用查看工具,缺文件补运行库,注册用 regsvr32。双击是最没必要的那条路。