dxtrans.h missing in Microsoft DirectX SDK (November 2007)... RRS feed

  • Question

  • 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

    What's wrong with it? If no dxtrans.h, why put it there in Visual Studio Installtion file, for what?

    Wednesday, January 2, 2008 1:01 AM


All replies

  • dxtrans.h ships with the DirectX SDK. Try copying the file from the DXSDK's install location to c:\program files\microsoft sdks\windows\v6.0a\include\

    Wednesday, January 2, 2008 6:42 PM

  • I've already installed   Microsoft DirectX SDK (November 2007)

    Obviously, Microsoft DirectX SDK (November 2007) doesn't contain dxtrans.h

    What to do ?

    Best Regards
    JIA Pei
    Wednesday, January 2, 2008 10:24 PM
  • Sorry, my mistake. Use the August 2007 DirectX SDK.


    Wednesday, January 2, 2008 11:08 PM
  • Problem solved with " DirectX SDK (November 2007)  ".

    Remove anything to do with "dxtrans.h" and "IDXEffect" .

    Say, for file "qedit.h"

    //#include "dxtrans.h" -- Line 498

    // IDxtCompositor //: public IDXEffect -- Line 837
    // IDxtAlphaSetter //: public IDXEffect -- Line 1151
    // IDxtJpeg //: public IDXEffect -- Line 1345
    // IDxtKey //: public IDXEffect -- Line 1735

    Now, everything compiles and works fine.


     Jason Sacks - MSFT wrote:
    Sorry, my mistake. Use the August 2007 DirectX SDK.


    Wednesday, January 2, 2008 11:58 PM
  • That solved it for me as well, qedit.h wasn't compiling.  Thank you for posting this.

    Friday, January 25, 2008 7:58 PM
  • The problem still persists with DX March 2008 SDK. I did modify Qedit.h as well - so now i can compile. However, its only a work around. Why is this file requested but not available anymore? I just installed Windows SDK 6.1 and March 08 DX SDK and ran into this problem with VS2005 on Vista...
    Thursday, March 13, 2008 7:03 PM
  • We're investigating adding this file for our Windows 7 releases. In the meantime use the workaround posted above.


    Monday, March 17, 2008 4:26 PM
  • You can get by with less edits of qedit.h (commenting out the missing interfaces can be error prone).


    Comment out the include of dxtrans.h.

    Before you include qedit.h, add the following #defines:


    #define __IDxtCompositor_INTERFACE_DEFINED__

    #define __IDxtAlphaSetter_INTERFACE_DEFINED__

    #define __IDxtJpeg_INTERFACE_DEFINED__

    #define __IDxtKey_INTERFACE_DEFINED__

    #include <qedit.h>


    Thursday, March 27, 2008 11:31 PM
  • Though removed anything with "dxtrans.h" and "IDXEffect" , can not compile on VC++ 2008 Express edition installed DX March 2008 SDK .

    "To compile qedit.h , you must install the Direct X 9 SDK ,to obtain the dxtrans.h " is displayed and compile is stopped.

    But DX March 208 SDK does not have "dxtrans.h". 

    What to do?

    Please advice to me.





    Thursday, April 10, 2008 8:03 AM
  • You need to use an earlier version of the DirectX SDK, such as the August 2007 DirectX SDK.




    ||Karin Meier||Windows SDK PM||Build Environment.Samples.Community||http://blogs.msdn.com/KarinM||


    Friday, May 30, 2008 4:34 AM
  • thank you from a newbye of directshow ;] this post is very IMPORTANT Smile


    Tuesday, July 1, 2008 8:57 PM
  • Very good post.  Was trying to use ISampleGrabber Filter in DirectShow which requires Qedit.h.

    I copied Qedit.h into my project folder, commented out the #include dxtrans.h directive and then put in the define statements as posted above just before I include Qedit.h.  Finally compiles without errors.  I do get a message that reads: "To compile qedit.h you must install the DirectX 9 SDK, to obtain the dxtrans.h header"  I have August 2007 installed (and using Visual C++ Express 2008).  Is this going to cause problems?  I assume this message is a result from using Qedit.h from my project folder.

    Sunday, August 10, 2008 12:43 AM
  • That message is simply a #pragma message(....), as a hint to anyone trying to compile qedit.h without dxtrans.h. The message has no other effect, and if you have modified your version of qedit.h, you can safely ignore the message.


    In retrospect I think that #pragma has confused more people than it has helped. :-(


    - Mike

    Wednesday, August 13, 2008 4:26 PM
  • I've followed all of your constructions with the result that there have been still some links within the qedit.idl to dxtrans. So i removed everything within the qedit.idl as well.

    line 11
    line 217-224

    - Tom
    Wednesday, August 20, 2008 12:30 PM
  • Very helpful!  With one more line you can get by without editing qedit.h.


    #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>



    • Proposed as answer by Will Hendrie Tuesday, August 11, 2009 2:17 PM
    Sunday, November 2, 2008 4:28 PM
  • Really clever. Thanks. Too bad this issue was marked as "answered" even though the root problem *still* remains!


    Monday, November 3, 2008 1:25 PM
  • File 'dxtrans.h' is pressed in next packs:
    - Microsoft Visual Studio

    - Windows Mobile SDK
    see next paths:
    - Program Files\Microsoft Visual Studio X.X\SmartDevices\SDK\PocketPC2003\Include\dxtrans.h
    - Program Files\Microsoft Visual Studio X.X\SmartDevices\SDK\Smartphone2003\Include\dxtrans.h
    - Program Files\Windows Mobile 5.0 SDK R2\PocketPC\Include\Armv4i\dxtrans.h
    - Program Files\Windows Mobile 5.0 SDK R2\Smartphone\Include\Armv4i\dxtrans.h

    Copy this file in Windows SDK
    (copy 'dxtrans.h' to x:\Program Files\Microsoft SDKs\Windows\v6.1\Include\dxtrans.h)
    and rebuild solution - Enjoy!

    • Proposed as answer by Lucian Carata Friday, February 27, 2009 1:07 PM
    Wednesday, November 12, 2008 1:13 PM
  • Hi,

    I'm facing similar trouble trying to use the Sample Grabber Filter. My IDE is Borland C++ Builder 6, and my OS is Windows 2000. I have the DirectX 9.0 SDK, from 2004. This SDK already has the "dxtrans.h" file, so I didn't have to make those changes in the "qedit.h" file. However, I still get two link errors, which say:

    "[C++ Warning] strmif.h(20557): W8058 Cannot create pre-compiled header: initialized data in header
      [Linker Error] Unresolved external '_CLSID_SampleGrabber' referenced from C:\TRABALHO\CONTROLE DE SOM\RAMOS\DIRECTSOUND\FUNCOESDSHOW.OBJ
      [Linker Error] Unresolved external '_IID_ISampleGrabber' referenced from C:\TRABALHO\CONTROLE DE SOM\RAMOS\DIRECTSOUND\FUNCOESDSHOW.OBJ"
    Does anybody have a suggestion in my case? I have already included "qedit.h" in my file. Thanks,

    Wednesday, February 11, 2009 12:31 PM
  • My question in the previous post was answered in another thread, which is in this URL:



    Monday, March 2, 2009 12:03 PM
  • Great guy! still a good workaround.

    (using DirectX SDK (March 2009) )

    Wednesday, April 8, 2009 2:46 PM
  • That worked for me. Thanks for the post.
    Tuesday, August 11, 2009 2:18 PM
  • Thank you very much, worked without a problem.

    Tuesday, September 15, 2009 12:06 PM
  • I believe a much more elegant solution exits to this problem that what has been described in this post.  Instead of editing the "qedit.h" header file in the Windows SDK, simply supply your own version of the "dxtrans.h" header file in your project's include directory.

    The contents of the file are quite simply the same as what was suggested by Morris Maynard in this thread:

     * FILE: dxtrans.h
    #define __IDxtCompositor_INTERFACE_DEFINED__
    #define __IDxtAlphaSetter_INTERFACE_DEFINED__
    #define __IDxtJpeg_INTERFACE_DEFINED__
    #define __IDxtKey_INTERFACE_DEFINED__
    Just include a file called "dxtrans.h" with the contents shown above in your project's include directory.

    By including these #define directives, you prevent the compiler from including the interfaces that are using the legacy IDXEffect interfaces that are part of the missing "dxtrans.h" header file.

    That's it, you're done.  If you include this file in your project's include directory, then the compiler will pick up your custom version of "dxtrans.h" when it comes across the include directive in the "qedit.h" header file.  No need to make changes to the SDK headers, and if you upgrade to a newer version of the Windows SDK (Windows SDK 6.1 for example), or try to distribute your project's code to other developers, you won't have to update the "qedit.h" header file again, and you won't have to include the necessary changes in some build notes; The changes will simply migrate with your project as long as you distribute your custom "dxtrans.h" file with the project.
    • Edited by jpvanoosten Wednesday, January 20, 2010 3:08 PM Code formatting changed.
    • Proposed as answer by jpvanoosten Wednesday, January 20, 2010 3:08 PM
    Wednesday, January 20, 2010 3:05 PM
  • Hi,


    I think I am missing something here. I have both Aug. and Nov. 2007 DirectX SDK downloaded and installed and both of them are missing both qedit.h and dxtrans.h files. So I am not sure how the workaround above is going to help me. I also find a Windows 7/ .Net 3.5 SP1  SDK and install it and it does not have these two files neither. Can you tell me what I did wrong ?




    Thursday, September 30, 2010 5:23 PM
  • Although Jason Sacks' post dated Wednesday, January 02, 2008 11:08 PM is marked as the answer for this question, there are other workarounds posted later that are better, which you should check out.

    • Edited by A.M. Sabuncu Friday, November 18, 2011 12:16 PM
    • Proposed as answer by A.M. Sabuncu Friday, November 18, 2011 12:17 PM
    • Unproposed as answer by A.M. Sabuncu Tuesday, May 22, 2012 8:54 AM
    Friday, November 18, 2011 12:15 PM
  • dxtrans.h ships with the DirectX SDK. Try copying the file from the DXSDK's install location to c:\program files\microsoft sdks\windows\v6.0a\include\

    is that all?

    1>c:\program files\microsoft sdks\windows\v6.0\include\dxtrans.h(278): fatal error C1083: Cannot open include file: 'd3d.h': No such file or directory

    Tuesday, May 22, 2012 8:12 AM