Skip to main content
gamedev.net
🔒 Locked

Version error....

Started by mrmrcoleman Sep 22, 2005 at 8:54 AM 6 replies 2k views
Original Post
mrmrcoleman
mrmrcoleman
Hello, I have just recompiled my project and I am getting an odd error. D3D ERROR: D3D header version mismatch The application was compiled against and will only work with D3D_SDK_VERSION (32), but the currently installed runtime is version (31) Recompile the application against the appropriate SDK for the installed runtime But I haven't changed the runtime, infact I haven't touched the project for about a week..? Any help appreciated. Mark
frob
frob
Quote:
Original post by mrmrcoleman
The application was compiled against and will only work with D3D_SDK_VERSION (32), but the currently installed runtime is version (31) ...
But I haven't changed the runtime, infact I haven't touched the project for about a week..


I believe the version numbers you mentioned are DX9c and DXb, respectively.

Both should match, and probably be the June 2005 edition of DX9c. Remove all old SDKs and reinstall the latest one, and install the debug and release drivers for that SDK at the same time.

frob.
mrmrcoleman
mrmrcoleman
Ok, for unavoidable reasons I am using the Summer 2003 SDK. I tried uninstalling and then re-installing but I get exactly the same error.

Does anybody have any ideas what might be going on here?

The program has been functioning perfectly for the last 12 months and now BAM!

Thanks for any help, this is getting really annoying now!

Mark
mrmrcoleman
mrmrcoleman
Apologies for bumping, but anybody?

Mark
mrmrcoleman
mrmrcoleman
Ok, in the d3d9.h file the D3D_SDK_VERSION is defined as 31. So how can DirectX possibly think I am on version 32?

Mark
S1CA
S1CA
Idea #1:

Delete all temporary (obj, etc) files from the project, including any precompiled headers, do a "Clean" on the project, then do a "Rebuild All".

If you previously built your project with a previous SDK, there's a chance that an auto-generated project file such as a precompiled header will still contain the current number for that #define - then when you change SDKs versions, the compiler has missed the fact that the header has changed so won't rebuild said temporary file.


Idea #2:

Ensure your machine doesn't have multiple copies of d3d9.h, and if it does, make sure MSVC *and* the project are pointing at the right version. This could be the case if you have a newish platform SDK installed which has a newer header than the one in your SDK - or if you had a duplicate of the files anywhere else.

You could download FileMon (www.sysinternals.com) and run that in the background when you Rebuild All to see which version MSVC is picking up and from where...
Simon O'Connor | Technical Director (Newcastle) Lockwood Publishing | LinkedIn | Personal site
mrmrcoleman
mrmrcoleman
S1CA,

I removed the intermediate files and did a clean. Same results.

Searching the hard drive reveals that I only have 1 version of d3d9.h and 1 version of d3d9.lib, but there are 2 versions of d3d9.dll. The first is in WINDOWS\System32, the second is in WINDOWS\ServicePackFiles\i386.

Although removing the servicepack version has no effect, and removing the system32 version obviously causes the program to not run at all...!

This is incredibly annoying! I don't suppose there is much point in me trying FileMon considering there is only one version of the header and the lib?

Mark

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.