DirectX Application and Distribution

I'm developing an application in Visual C++ 2010 that uses DirectX 9 and I'd eventually like to distribute it. When I run the program on other computers (running Win 7 x64, same as the machine on which I developed the application) I get an error saying d3dx9d_43.dll is missing. This happens regardless of the Runtime Library configuration I set in Visual Studio so for now I've just copied the dll into the folder that contains my executable.

After including the dll file the program starts but nothing is rendered - it's just a white screen. I can tell the program is running properly but nothing is being displayed. I'm assuming that if these test machines had the DirectX SDK installed this wouldn't happen?

I tried including the DirectX end-user runtime installer with my application; the installer downloaded files (taking a good 15-20 minutes), installed them and still I get the "d3dx9d_43.dll is missing" error message and a white screen when I manually include the dll.

I tried starting the program on a machine running Windows 8 and it runs fine.

It's a very lightweight program and I'd prefer the user not be required to download a huge collection of files to be able to run it. If I'm not able to pack the necessary files into the executable I wouldn't mind including a few extra files. Can anyone point me in the right direction?
d3dx9d_43.dll is the debug version of the DLL (hence the d after the 9), which is non-redistributable.

For your release build you should be linking to the release version of the DLL.

Andy
Last edited on
As Andy told you: distribute the release version.

Plus do not distribute DirectX. Instead tell the user that it is a requirement to download and install if it's not already.

Several games have this requirements.
Thx for replies ^^.

Linked to the release version and oddly get d3dx9d_43.dll missing error but D3DX9_43.dll works just the same. Is including this file absolutely necessary or am I building the project incorrectly (ex: you don't have to include an image for the icon in the same directory, it's built into the executable as a resource)? Configuration is set to release and I've set runtime library to /MT and /MD in code generation settings.

Anyway, still getting a white screen, even after installing DirectX SDK (June 2010) on target machines.

And several games are several gigabytes; my software package is about 4MB and the DirectX download is over 500MB. All of those files can't be necessary for even the simplest of DirectX applications, can they?
the DirectX download is over 500MB

I assume you're talking about the SDK. That sounds rather large for the redistributable!?

Andy
Last edited on
Yeah that is the size of the SDK actually; the redistributable is nearly 100MB, though - I tried installing the SDK after the end-user runtimes didn't work (trying to recreate the environment in which the program worked, thinking the problem was the result of linking to an incorrect directory or something).

So with the above mentioned do you have any suggestions :O?

EDIT:

Nvm I thought it might be a compiler-related issue or something obvious but I added some exception handling and found that the D3D device isn't being created successfully :(. Debugging time.


EDIT:

D3DERR_NOTAVAILABLE. Mother of god. Every machine I tested my software on (except for the one with Windows 8) I happen to have clean installed a new OS on so I could dual boot Win7 and Linux...like five days ago. Every machine had incorrect display drivers. Best three days spent researching ever. Can't say I'm not happy to see my program displaying shiny graphics, though :'D.
Last edited on
DirectX has a Web installer, which is very small in size and that you should include with your application. Of course, internet access will be required on target machines.
The problem with DirectX is very common. Especially when you install the new game and it always occur a message like "d3dx9_43_dll error" in such case it's needed to download the file from here http://fix4dll.com/d3dx9_43_dll for example. And the problem is fixed=)
Topic archived. No new replies allowed.