D3DCOMPILER一系列文件都可以用DirectX Repair增强版一键修复。可惜,不包括这个47。(附件并不能解决47版本的问题!丢失47的请不要下载,丢失43等其他版本可用)
47版目前只发现存在于Windows 10系统内,怀疑为是DX12的文件,而DX12目前仅有Windows 10系统支持,其他Windows 7、8等均无法使用DX12。所以,目前最保险的解决丢失D3DCOMPILER-47.dll的办法只有:换Windows 10系统。
不过,也可以考虑采用其他办法,比如下载这个dll放到游戏的根目录、bin文件夹之类的。
详情参考DirectX Repair工具的作者vbcom大神的回复:
关于d3dcomplier_47.dll是属于DX几版本的,目前微软官方并没有一个明确的说法。不过考虑到这个文件只内建于Windows 10,暂且把它归属DirectX 12没有关系。
微软在最新的DirectX系列上(比如12)采用了不一样的发布策略,即只通过新系统捆绑发布,不再提供单独的更新选项。可以浏览一下微软的官网,并没有DirectX12相应的任何组件包发布,所有新DirectX特性都直接内置于新系统里。
然或毁侍后说说你说的游戏问题。如果是纯DirectX12游戏,那么只能运行在Windows10上。不过一般游戏公司都不会这么衫吵做,一般都是支持DirectX12特效,向下兼容DX11等。所以说,针对这些游戏,如果在非Windows10平台上运行,只要在最开始先骗过游戏的完整性检测,运行起来是没有问题的。这些游戏在最开始会检测dll组件,其中包括d3dcomplier_47.dll,如果没通过直接报错。但是只要把这步骗过去,游戏在运行时并不会调用DX12,运行起来是余灶OK的。
我看现在很多正版游戏的做法是把这些文件(比如d3dcomplier_47.dll)放在游戏目录下,与游戏exe在相同文件夹下,来实现完整性检测。这个具体放置的位置,各个游戏不太一样。比如有的是直接放在主目录下,有的是放在bin文件夹下,这个就需要根据具体的游戏自己来尝试了。
最后再说说关于DirectX修复工具的事。其实早在Windows8发布的时候,我就注意到了微软把最新的DirectX捆绑在系统里的做法了。还有其他一些组件比如xaudio2_8.dll等等也是相同的情况。DirectX修复工具迟迟没有加入对这些组件修复的原因是,微软官方并没有给出一个标准文件的样本,即什么是微软官方认可的DirectX 12文件。因此说,如果要修复这些文件,只能参照Windows10系统里自带的文件。但这样做会有极大的风险,因为微软可以随时的更改这些组件,因为毕竟没有公开的标准。考虑到此点,为保守考虑,所以DirectX修复工具目前还不支持对此类文件的修复。
不过考虑到现在DirectX 12的游戏越来越多,对此类文件的修复的需求也越来越大,我也会着手研究对应的解决方案,争取尽早将其加入到新一版的DirectX修复工具中。