Windows Developer Center > Software Development for Windows Client Forums > Windows SDK > dxtrans.h missing in Microsoft DirectX SDK (November 2007)...
Ask a questionAsk a question
 

Answerdxtrans.h missing in Microsoft DirectX SDK (November 2007)...

  • Wednesday, January 02, 2008 1:01 AMjiapei Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     


    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?

    Regards

Answers

All Replies

  • Wednesday, January 02, 2008 6:42 PMJason Sacks - MSFT Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     

    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 02, 2008 10:24 PMjiapei Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     


    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 02, 2008 11:08 PMJason Sacks - MSFT Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Answer
    Sorry, my mistake. Use the August 2007 DirectX SDK.

     

  • Wednesday, January 02, 2008 11:58 PMjiapei Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    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.

    Regards
    JIA


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

     

  • Friday, January 25, 2008 7:58 PMKato2 Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    That solved it for me as well, qedit.h wasn't compiling.  Thank you for posting this.

  • Thursday, March 13, 2008 7:03 PMNikolaus Brennig Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    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...
  • Monday, March 17, 2008 4:26 PMJason Sacks - MSFT Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    We're investigating adding this file for our Windows 7 releases. In the meantime use the workaround posted above.

     

  • Thursday, March 27, 2008 11:31 PMMorris Maynard Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     

    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, April 10, 2008 8:03 AMhirs Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     

    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.

     

    Regards

    HIRS

       

  • Friday, May 30, 2008 4:34 AMKarin MeierMSFT, OwnerUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     

    You need to use an earlier version of the DirectX SDK, such as the August 2007 DirectX SDK.

     

    --Karin

     

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

     

  • Tuesday, July 01, 2008 8:57 PMLUIGI DI BIASI Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    thank you from a newbye of directshow ;] this post is very IMPORTANT Smile

     

  • Sunday, August 10, 2008 12:43 AMrhtcguru Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     

    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.

  • Wednesday, August 13, 2008 4:26 PMMike WassonMSFTUsers MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     

    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 20, 2008 12:30 PMsunrise3d Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    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
  • Sunday, November 02, 2008 4:28 PMkenc34 Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Proposed Answer

    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>

     

    Ken

    • Proposed As Answer byWill Hendrie Tuesday, August 11, 2009 2:17 PM
    •  
  • Monday, November 03, 2008 1:25 PMMorris Maynard Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Really clever. Thanks. Too bad this issue was marked as "answered" even though the root problem *still* remains!

     

  • Wednesday, November 12, 2008 1:13 PMv_ctrL Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Proposed Answer
    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 byLucian Carata Friday, February 27, 2009 1:07 PM
    •  
  • Wednesday, February 11, 2009 12:31 PMAdriano_PC Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    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,
    Adriano.

  • Monday, March 02, 2009 12:03 PMAdriano_PC Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    My question in the previous post was answered in another thread, which is in this URL:

    http://social.msdn.microsoft.com/Forums/en-US/windowsdirectshowdevelopment/thread/a6773067-8270-4ac6-9365-842235808058

    Regards,
    Adriano.

  • Wednesday, April 08, 2009 2:46 PMhpi_student Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Great guy! still a good workaround.

    (using DirectX SDK (March 2009) )


    ,thanks
  • Tuesday, August 11, 2009 2:18 PMWill Hendrie Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    That worked for me. Thanks for the post.
    Cheers
  • Tuesday, September 15, 2009 12:06 PMEldeeb Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     
    Thank you very much, worked without a problem.

  • Wednesday, January 20, 2010 3:05 PMjeremiah3000 Users MedalsUsers MedalsUsers MedalsUsers MedalsUsers Medals
     Proposed AnswerHas Code
    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.
    • Proposed As Answer byjeremiah3000 Wednesday, January 20, 2010 3:08 PM
    • Edited byjeremiah3000 Wednesday, January 20, 2010 3:08 PMCode formatting changed.
    •