打开一款老游戏,图标闪一下,弹窗紧跟着出来——「无法启动此程序,因为计算机中丢失 d3dx9.dll」。这台机器是刚重装完的 Windows 10,新游戏、浏览器、视频播放都正常,只有这个装了十几年的单机游戏起不来。
第一次碰到这个报错的人,多半会去搜「d3dx9.dll 下载」,然后被引到一堆 dll 下载站。这一步走错,后面基本就是白折腾:问题依旧,或者引出别的毛病,严重的连系统都进不去。
先把结论放前面:这是 DirectX 9 运行时里少了一个组件,和病毒、系统损坏都没有关系。 知道缺的是哪一块,修复就是两三分钟的事。
d3dx9.dll 属于 DirectX 9.0c 运行时,是 DirectX 9 时代的游戏调用图形接口时要加载的动态链接库。2000 年代中期到 2010 年前后的单机游戏,绝大多数基于 DirectX 9 开发,缺了这个文件,程序在加载阶段就退出,表现出来就是双击没反应,或者直接弹一条丢失 dll 的提示。
那为什么新买的机器、刚重装的系统上,新游戏跑得好好的,一碰老游戏就出问题?
所以现象看起来很反直觉:硬件没问题、驱动没问题、游戏文件也没坏,问题卡在组件这一层。
顺带说一句,缺的往往不止这一个。d3dx9_43.dll、xinput1_3.dll 都属于同一批 DirectX 9 组件,只是恰好先报到了 d3dx9.dll 头上。
网上教程里传得最广的一条是:去某个 dll 下载站下一个 d3dx9.dll,复制进 C:\Windows\System32,重启。
这条路我不建议走,原因有两个。
第一个是安全。dll 下载站里打包木马的比例一直不低,下载到的未必是修复文件。把一个来路不明的 dll 放进系统目录,等于让它在系统启动和程序加载路径上都有机会被执行。
第二个是不对症。d3dx9.dll 只是表象,缺的通常是整套 DirectX 9 运行时。手动补一个文件,很可能重启之后换成另一个 dll 报丢失,来回反复。
确实要手动替换 dll,至少先确认文件的来源和数字签名。但既然官方有完整的运行时安装包,这一步没有走的必要。
下面三条路,按顺序试。

这是最干净的一条路。微软官方提供了 DirectX 最终用户运行时包,会把 DirectX 9.0c 这套旧组件完整补齐,其中就包含 d3dx9.dll。
操作顺序:
基本 95% 的情况到这一步就解决了。
但它有个常见的坑:安装程序跑到一半提示「已经安装了等效或更新的版本」,然后直接退出。原因是系统里的 DirectX 版本号比安装包高,安装程序做了版本判断,把自己跳过了。
碰到这个提示,往两个方向走:
很多游戏在安装时会把自己依赖的 DirectX 组件一起放进安装目录,只是默认不执行。这也是为什么有些游戏重装一遍就好了。
去游戏安装目录里翻一下,常见的位置有:
DirectX 文件夹;Redist 或 _CommonRedist 文件夹;DirectX\Jun2010 这种带年份的子目录。里面通常有一个 DXSETUP.exe。双击运行,它会自己判断缺哪些组件、补哪些,跑完重启即可。
这个办法的好处是版本一定对得上,缺点是只补这个游戏需要的那几个组件。机器上还有别的老游戏要跑的话,过几天可能又冒出一个新的 dll 丢失。
如果前两步都试过还是不行,先别急着再去下载站碰运气。Windows 自己带了几条修复命令,可以把系统组件的状态理一遍。
在管理员权限的命令行里按这个顺序执行:
DISM /Online /Cleanup-Image /RestoreHealth
sfc /scannowDISM 负责从系统源里补齐损坏的组件,sfc /scannow 负责扫描并替换被改坏的系统文件。顺序别反——如果系统组件映像本身是坏的,sfc 会反复报「找到损坏文件但无法修复」。
想看图形接口这一层的状态,直接在「运行」里敲 dxdiag,打开 DirectX 诊断工具:
还有一条容易被忽略的:32 位程序和 64 位程序读的目录不是同一个。64 位程序找 C:\Windows\System32,32 位程序找 C:\Windows\SysWOW64。老游戏基本都是 32 位的,真要手动核对,别只盯着 System32。

修完这一次,不代表以后不会再碰到同类问题。下面这些报错看着名字不一样,根子上是同一类东西:程序依赖的运行库或系统组件缺了一块。
报错信息 | 通常缺什么 | 先查哪一层 |
|---|---|---|
d3dx9.dll 丢失 | DirectX 9.0c 运行时 |
|
msvcp140.dll / vcruntime140.dll 丢失 | Visual C++ 运行库 | 已安装程序列表里的 VC++ 版本 |
0xc000007b | 32/64 位组件混装,或运行库不全 | 程序和运行库的位数是否一致 |
应用程序无法正常启动、打开即闪退 | 运行库或系统组件缺口 | 事件查看器里的应用程序日志 |
处理顺序是通的:先补官方运行库,再考虑系统自检,最后才考虑手动补文件。
几条边界,先说在前面:
chkdsk,磁盘层面不干净的话,装什么都会被改坏;没验证到的地方也说清楚:上面这些操作我是在 Windows 10 的机器上走通的,Windows 11 的机制按理一致,但手上没有对应环境实测过。
说到底,d3dx9.dll 丢失就是这么一件事:先确认缺的是 DirectX 9 运行时这一块,再走官方安装包补齐,不要把下载站里的单个 dll 文件往系统目录里扔。几条命令、一次重启,多数机器就能回到正常开游戏的状态。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。