# Using DirectX9 within Visual Studio 2012 in Windows 8?

Asking the question here simply because my PC is down for the count for a while and wasn't able to stave a curiosity before that happened.

I picked up a few books about programming Games in DirectX, specifically 9.0c.

I have a Windows 8 machine, and have Visual Studio 2012, and remember a massive headache about following some of the more simple DirectX tutorials on the web as everything I could find was prior to Windows 8 when all headers and such we're available, and DirectX wasn't merged into the WindowsSDK. (I think specifically it was the absence of a commonly used DX UTILITY that was causing issues).

Before my PC went down, I wasn't able to try simply installing previous SDK's.

.. Does this work? Can one, under a Windows 8 environment with Visual 2012, install the previous DX9 SDK's and it'd work out alright? Are there going to be conflicts? How can I set this up correctly? I'm just interested in getting going with the basics of what can be followed by the majority of the resources available today, and not so much "bleeding edge" at the moment...

• Besides trying to force DX9 to work, I would say just start with DX11. – bobobobo Apr 1 '13 at 15:21
• – Laurent Couvidou Jun 25 '14 at 13:06

Yes. You may have to change some include path orders in your V++S directories properties tab to get the right headers. I don't use DX9 for new projects in VS2012 (and our DX9 projects at work are all developed in VS2008 on Win7), so I'm unsure of any details. For DX11 that was all that was necessary to use the June 2010 SDK specific interfaces (most of the important APIs are the same).

Most of the DX9 headers should just work, though. The libraries will link and run just fine.

Be sure you're using a more fully-featured of VS2012. If you're using Express, be sure you're using the Desktop edition. If you're using 2012 Express for Windows 8 you will have problems; it only produces newer Windows 8 style apps, which DX9 games most certainly aren't.

Visual Studio 2012 for Desktop

• If you're having trouble with VS 2012, you can install 2008 or 2010 on Windows 8 just fine & use that instead. Express editions should be OK for learning with. – Maximus Minimus Mar 14 '13 at 1:13
• If you don't mind the reduced C++ feature set, yes, that works. The Win8 SDK is part of VS2012, so there shouldn't be conflicts if using an older version. – Sean Middleditch Mar 14 '13 at 1:27

I have had some major headaches trying to get DX9 to work with VS2012. Most of our dev code is in DX9. I'd recommend against touching DX9 at all these days, unless you are working with an existing project that uses DX9. DX10 and up bring some new nice features, and a couple of critical ones (depending on your project needs). DX9 has pre-compiled libs that use an older runtime than VS2012 - you will get linker errors, and a couple of header compiler mismatches.

• Generally the issue of mixing static libraries built from different versions of VS is not a good idea. You need to rebuild them with VS 2012 or obtain new .libs built by that toolset. The legacy D3DX9 DLL doesn't have this issue. – Chuck Walbourn Apr 29 '15 at 18:43

If you want to develop DirectX applications using Visual Studio 2012 and the June 2010 DirectX SDK (the last one to be released as a stand alone SDK) then you will need to follow some steps first:

Installing the SDK might crash with an error S1023 – if it does check this link out:

https://stackoverflow.com/questions/4102259/directx-sdk-june-2010-installation-problems-error-code-s1023

All I did was run the MSIEXEC commands (create a batch file if you want, makes it easier to execute) and then re-installed the SDK.

Fixing D3DX9

There are extension libraries and headers that VS2012 can’t see by default. There are no explicit instructions on the tutorial site on how to setup VC++ directories and to be honest, most people will probably do this par for the course but I forgot this time so here’s what I did:

"#include" wasn’t working and therefore any references to the “X” components wouldn’t compile. Simple enough to fix. Right click on the project in the solution explorer and choose properties. Once there find the VC++ Directories option on the right (it’s under “Configuration Properties”). Make sure that the “Configuration” drop down at the top is set to “All Configurations” then click on Include Directories and add the following entry:

$(DXSDK_DIR)\Include Do the same with the Libraries entry but change it to:$(DXSDK_DIR)\Lib\x86