Why use D3DX?
I understand that D3DX is deprecated and replaced by DirectXMath in the Windows 8 SDK. However DirectXMath is not included in the Windows 7 SDK, and neither is D3DX...which means that there seems to be no "proper way" to access these basic utility functions. I have heard that it may work to use the Windows 8 SDK for development on Windows 7, however, that doesn't sound entirely reliable to me...and I'm not interested in developing Windows 8 apps at this time anyway. I would like to utilize some of my older code that is written using D3DX for this project and so I prefer to stick with that for now. Therefore, I am trying to use the last DirectX SDK frome June 2010.
What's the problem?
After installing the DirectX SDK, and added the new include and lib paths under the Win32.User properties page in Visual Studio (as explained in the answer here ), and add the following includes:
#include <d3d11.h>
#include <d3dx11.h>
#include <d3dx10.h>
#pragma comment (lib, "d3d11.lib")
#pragma comment (lib, "d3dx11.lib")
#pragma comment (lib, "d3dx10.lib")
...and now, although I can use certain D3DX functions like D3DXCOLOR, I get unresolved external symbol errors for certain functions like D3DXCompileFromFile and D3D11CreateDeviceAndSwapChain.
I think the problem is that d3dx11.h exists in two places:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include
C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\Include
In other words, the D3DX headers conflicts with the headers already present in the built in windows SDK, and I cannot even remove those built in include paths or give my include path priority over them (at least I don't know how).
How can I resolve this issue?