天行健 君子当自强而不息

找不到d3dx9_25.dll

今天在学习DirectX 9 SDK的时候,碰到了一个问题,提示我:

This application has failed to start because d3dx9_25.dll was not found.

上网查了下,找到了原因,英文就不翻译了,再也找不到英文比我还烂的人了 ^_^:

There have been issues with DirectX since the February 2005 update relating to the D3DX dll library files. You can no longer distributes apps without the DirectX runtime and expect them to work.

Windows XP users who keep their machines up to date should all have DirectX 9.0c installed but not the D3DX dlls so will get errors about missing d3dx9_xx.dll (where xx is from 24 for the February 2005 update to the latest - see below). In addition XINPUT dlls may be missing (this is the Xbox controller system). Unfortunately the end user is not automatically downloading the new dlls. The best solution is to distribute the DirectX runtime with your app. however if you are providing your app. as a download this could increase its size. From the June 2005 release Microsoft solved these problems somewhat by allowing the developer to create a minimal installer that just updates the D3DX dll. You could also of course just include the dll. although this is against the agreement (EULA). Another solution is to forward users to the Microsoft DirectX end user runtime download.

Download the missing DLLs

Note: these installers will not install DirectX 9.0c, they will only install the missing dlls from the SDK updates. Most people should have DirectX 9.0c as part of Windows XP SP2 but if you do not you can get it here: DirectX 9.0c. You can also use the online Microsoft update page here: Microsoft Web Installer

Name

Installs D3DX DLL

Download sites

D3DX February 2005 Update

d3dx9_24.dll

shdon, gamedev ,threelights

D3DX April 2005 Update

d3dx9_25.dll

shdon, gamedev ,threelights

D3DX June 2005 Update

d3dx9_26.dll

shdon, gamedev ,threelights

D3DX August 2005 Update

d3dx9_27.dll

shdon, gamedev ,threelights

D3DX October 2005 Update

No change

 

D3DX December 2005 Update

d3dx9_28.dll

shdon,threelights

D3DX February 2006 Update

d3dx9_29.dll

shdon,threelights

D3DX April 2006 Update

d3dx9_30.dll
xinput1_1.dll

threelights

D3DX June 2006 Update

No change

threelights

D3DX August 2006 Update

xinput1_2.dll

threelights

D3DX October 2006 Update

d3dx9_31.dll
xinput1_3.dll

threelights

D3DX December 2006 Update

d3dx9_32.dll

threelights

D3DX February 2007 Update

No change

threelights

D3DX April 2007 Update

d3dx9_33.dll

Microsoft Web Installer

Matthias Langer of ThreeLights has kindly combined the downloads into one making it very easy to install. See his site to download.

Note: if you are missing d3dx9d_xx.dll files e.g. d3dx9d_29.dll these files are debug versions of the libraries for development purposes only. Nobody should be distributing these in an application. To use these you need the full DirectX SDK.

The xinput dlls are for the Microsoft common controller library and are used for things like the Xbox 360 common controller


===================================================================================

这个站点就可以直接下载相关的DLL,上面列出的链接应该也可以,不过我没有一个个去试。

http://www.shdon.com/view?doc=d3dx

DirectX D3DX DLLs

In previous versions of the DirectX SDK, D3DX was statically linked. Current version use a DLL instead. Unfortunately, with each minor update of the SDK, a new version of this DLL was created. Many people find they cannot run simple programs they download from the net because they miss a file such as D3DX9_25.DLL.

Fortunately GameDev.net forum member Keith Ditchburn (Trip99) has created installers for these files. To help him out with the bandwidth requirements, I've mirrored the files below. Please download just the file you need.

===================================================================================

 

这篇文章也谈到了这个问题,所谓windows DLL地狱。

DirectX Updates - DLL Hell Revisited

Have you tried playing a new DirectX game lately only to have the game complain that it can't find weird files like d3dx9_25.dll, or crash because it can't find an assembly like Microsoft.DirectX.AudioVideoPlayback? I have, and it's taken me a while to figure out what was going on, and how to fix the problem.

First off, if you're experiencing such a problem right now, you probably want to fix it and get on with your game. If you're looking for d3dx9_24.dll, d3dx9_25.dll, d3dx9_26.dll, or d3dx9_27.dll, just download the appropriate mini-installer right here. If you need the DirectX for Managed Code extensions (necessary for .NET-based programs that use DirectX), you can download my own mini-installer right here.

So here's what's going on. If you have Windows XP Service Pack 2 installed, you already have Microsoft's latest version of DirectX (9.0c) installed as well. You can verify this by clicking Start Run, entering dxdiag.exe, and clicking OK. When the DirectX Diagnostic Tool loads, you should see the current version listed next to "DirectX Version." Many games install DirectX as well, and you can even download it on your own. The thing is, Microsoft has produced numerous updates to DirectX 9.0c, whose files are not included in the 9.0c distribution, and aren't obviously available for download from Microsoft's site. You can get them indirectly by downloading the developer versions of the 34-megabyte DirectX redistributable file. (Go to Microsoft Download Center and search for "directx redistributable for developers".)

Game developers are also supposed to include these files in their game installers. But if you Google for some recent games (say, Black & White 2 or Battlefield 2) and d3dx9_25.dll, you'll find that this isn't quite working out. Back in the early days of Windows, tech support people and developers complained of "DLL Hell," a state of utter confusion that existed when Microsoft didn't tightly control how its own redistributable files were installed and upgraded. Old versions trampled over new ones, duplicate non-mixing versions got scattered all over the hard drive, programs that once worked ceased working after new software was installed- it was truly terrible. Beginning with Windows 98, Microsoft added "Windows File Protection" to their operating systems to protect important system files from getting trampled. They also tightened down their software logo certification requirements and required that their redistributable files ONLY be installed using their own installers (developers could no longer randomly include Microsoft-authored components in their own installers). This was a very good thing and ended up making Windows software much more reliable in the long run.

So, what in THE HELL was Microsoft thinking when they started releasing parts of DirectX piecemeal and not updating the runtime available to consumers? It's just freaking insane! Do you know what most gamers who've encountered these problems have been doing? They've been going to web sites and P2P sharing networks and downloading these files individually. This is dangerous for a couple of reasons: First, these files are scattered all over the Internet and some of them have some dependencies. If you just grab one file at a time, there's no telling how stable your DirectX games that use them are going to be. Second, if you're downloading the files from some random site or P2P network and just dropping them onto your hard drive, you have no way of knowing that the files haven't been hacked or compromised- or are outright fakes. These are some of the things Microsoft meant to avoid by instituting rules about how their files are deployed and they have regressed to a state where users are potentially screwing up their systems again, likely causing both Microsoft and game publishers time and money in technical support calls. Good one!

Why can't they update the DirectX web installer to check for any of the new DirectX components and just install those? (The web installer and even the single-file DirectX redistributable haven't been updated since August of 2004.) If nothing else, why can't Microsoft just up-level the DirectX version when they release a new update? (I mean these new files all require DirectX 9.0c to be installed anyway- they're not standalone additions.) Why can't they just call it 9.0d, e, f, etc. and update the downloads accordingly?

Anyway, as mentioned earlier in this post, I did my own installer for DirectX for Managed Code, and I also pointed to mini-installers for the D3DX DLLs. These aren't rogue piecemeal installs; they all use Microsoft's DirectX setup program and the appropriate files from the SDK redistributables, and are the only correct/safe way to obtain these files if you didn't get them when you installed your game. All of them require that you already have DirectX 9.0c installed.

If you'd like to know how I made my installer, here's the scoop. I read the article Installing DirectX with DirectSetup at MSDN and installed the latest DirectX SDK (I have an MSDN subscription... I don't think you can download the SDK without one) and looked in the Redist folder. Well the article states that you can create a mini-distribution by taking the following files from Redist and placing them into the same folder: dxsetup.exe, dsetup32.dll, dsetup.dll, dxupdate.cab, and the CAB file of the component you want to install. For example, I needed Oct2005_MDX_x86.cab, for the Managed Code stuff. However, that's not necessarily all. Look inside the cab file and check the enclosed INF file (oct2005_mdx_x86.inf in this case) and see if there are any "Dependencies" entries. You'll have to include any CABs listed here in order for your mini installer to work. To make my redistributable a standalone installer, I used Ace Zip to create a self-extracting archive, and instructed Ace Zip to launch Dxsetup.exe once the files were unzipped. Ace Zip has quite possibly the worst UI I've ever seen, but it works. Also, before you visit the Ace Zip site please be aware that some of the banner ads there are pornographic.


posted on 2007-04-26 13:01 lovedday 阅读(3839) 评论(2)  编辑 收藏 引用 所属分类: ■ DirectX 9 Program

评论

# re: 找不到d3dx9_25.dll 2009-05-31 09:55 松岛枫

D3DX9_26..
的版本很多,不同的游戏要求DirectX的版本也不同,所以启动游戏时可能会发生缺少某些DX9的DLL文件,会造成游戏提示缺少...http://www.8boo.com/directX/index.htm">http://www.8boo.com/directX/index.htm 参考资料:http://www.8boo.com/directX/index.htm">http://www.8boo.com/directX/index.htm 回答者:frogjy - ...
zhidao.baidu.com/question/32440935.html 12K 2007-8-31 - 百度快照
zhidao.baidu.com 上的更多结果  回复  更多评论   

# re: 找不到d3dx9_25.dll 2009-05-31 15:47 鼯鼠

这还不简单
重新编译一下就可以了
如果没有办法编译,就在你的机器上随便找一个版本的d3d*.dll名字改改,改成d3dx9_25.dll 就可以了!不就是版本不同嘛~~里面的大多数函数是一样的。

欢迎来我的空间讨论啊~
http://www.dingge.com/forum

我可是你这里的常客!呵呵  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


公告

导航

统计

常用链接

随笔分类(178)

3D游戏编程相关链接

搜索

最新评论