A workaround for a missing file, “dxtrans.h” in DirectX SDK

Posted on Jun 17, 2009

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" )
#define __IDxtCompositor_INTERFACE_DEFINED__
#define __IDxtAlphaSetter_INTERFACE_DEFINED__
#define __IDxtJpeg_INTERFACE_DEFINED__
#define __IDxtKey_INTERFACE_DEFINED__
#include <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.