The issue occurs because a newer version of the Visual C++ 2010 Redistributable is present on the computer. The June 2010 DirectX SDK installs version 10.0.30319 of the Visual C++ Redistributable.
1. Uninstall Microsoft Visual C++ 2010 x86 & x64 Redistributable.
2. Install the June 2010 DirectX SDK.
3. Reinstall the most current version of the Visual C++ 2010 Redistributable Package.
The DirectX SDK is included as part of the Windows SDK, starting from Windows 8. However, D3DX is not considered the canonical API for using Direct3D in Windows 8 and therefore isn’t included in the Windows SDK shipped with Visual Studio 2012. So, when you compile an old project which depends on D3DX, you still need to get “d3dx9.h”, “d3dx10.h”, or “d3dx11.h” from the June 2010 DirectX SDK. This causes a confliction between the June 2010 DirectX SDK and the DirectX SDK included in the Windows SDK (ver 8.0). For example, you will see a bunch of warning C4005 like the following.
You may see the following error message when you compile DirectShow with the latest version of DirectX SDK. (the current version is “DirectX SDK – March 2009” at this moment)
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\qedit.h(498) : fatal error C1083: Cannot open include file: ‘dxtrans.h’: No such file or directory
This is because “dxtrans.h” is not included in the latest version of DirectX SDK any more (from DirectX SDK – November 2007) although “qedit.h” of DirectShow is still dependent on it.
I found an article posted by people who were already troubled with this problem. The point is that the part of “qedit.h” which depends on “dxtrans.h” is not necessary to use DirectShow, so you comment it out in “qedit.h” and the error will be gone. (For the details, see this) The other solution which I like better is to define some keywords before including “qedit.h” to prevent the “dxtrans.h” dependent code from being compiled. Then, you don’t need to edit “qedit.h” itself.
#pragma include_alias( "dxtrans.h", "qedit.h" )
FYI. DirectShow is not a part of DirectX SDK any more, and is moved to Microsoft Windows SDK (which has been called Platform SDK for a while). Windows SDK is installed as a part of Visual Studio 2008, so you don’t need to install it additionally to use DirectShow unless you want the latest version of Windows SDK.