not compiling with directx10

Started by
9 comments, last by LeGreg 17 years, 11 months ago
I just formatted my computer, installed Visual Studio 2005, and downloaded the April 2006 DirectX SDK. Now I'm having a little trouble compiling my sound class. The include file dshow.h is nowhere to be found. The structures it contained were IGraphBuilder and IMediaControl, among others. I needed these to load/play MP3's. References to these structures were nowhere to be found in any of the includes. Should I download the older SDK's or something? Any suggestions to get my project to compile?
-------Harmotion - Free 1v1 top-down shooter!Double Jump StudiosBlog
Advertisement
DirectShow was moved out of the DirectX SDK in the April 2005 SDK release*.

The DirectShow SDK components are now part of the Platform SDK, which is available here:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sdkintro/sdkintro/devdoc_platform_software_development_kit_start_page.asp


[*]<br><br><br><br>[edit]oh, and the current SDK isn't the "DirectX 10" SDK - it simply contains a preview of Direct3D 10 components (there is no Direct<b>X</b> 10 either [smile])[/edit]

Simon O'Connor | Technical Director (Newcastle) Lockwood Publishing | LinkedIn | Personal site

It's been a while since I did any DShow programming, but you might also need to compile the "base classes" for DShow once you've got the PSDK set up properly. That one's tripped me up a few times before - just run the appropriate makefiles that create STREAMBASE.lib and STREAMBASD.lib (iirc) and point your project at those as well...

hth
Jack

<hr align="left" width="25%" />
Jack Hoxley <small>[</small><small> Forum FAQ | Revised FAQ | MVP Profile | Developer Journal ]</small>

Also, I'm not sure if you already have Windows Vista, but you need Vista to use DX10 properly.
Cool, I'll check out the link. I hope it all integrates with DirectSound. It will be very disappointing if they made it harder to load and play MP3's. I guess I'll check it out and let everybody know if I have problems :)
-------Harmotion - Free 1v1 top-down shooter!Double Jump StudiosBlog
Quote:Original post by rpg_code_master
Also, I'm not sure if you already have Windows Vista, but you need Vista to use DX10 properly.


Sorry to get a bit off topic here, but has anyone managed to get Direct3D 10 to work under the latest Vista build (5365)?
DirectX 10 includes all the functionality that I need to get my d3d9 projects up and running, except DirectShow stuff.
I did not have to compile the .lib files, but I did have to manually tell VS where the includes and libraries were. I still don't know how to change compiler directory variables (PlatformSDKdir and frameworkSDKdir or whatever), but that isn't necessary.
Anyways, thanks for the help. I'm glad its working.

What really ticks me off is that d3d 9.0c is not backwards compatible with 9.0b. How could they have included and used a new .dll file?

Oh yeah, heres a good question: Is there any way to compile my projects from 9.0c such that they will compile with people that only have directX 9.0b installed?

Anyways, thanks again.
-------Harmotion - Free 1v1 top-down shooter!Double Jump StudiosBlog
Quote:Original post by blaze02
Oh yeah, heres a good question: Is there any way to compile my projects from 9.0c such that they will compile with people that only have directX 9.0b installed?


Do you mean, so that they will "run" on dx9.0b only ?

Well you have two options :
- Compile with dx9.0c and integrate the redistributable files from the SDK that was used to create the executable (and you should have a proper SDK versioning system inside your build system anyway). Those redist are installed by default when you install your app (make it that way!). Chances is that if they've been using any recent game, they already have Dx9.0c installed, but they may not have the d3dx files that are specific to one SDK version, so in all cases you need this install.
- If you don't want to force a dll update then you should only compile with an older SDK version before they switched to dx9.0c (that would be early 2004 ?).

LeGreg
I'm not a big fan of installers, especially for the little demo programs I am writing. I just want someone that hasn't updated directX in passed year and a half to be able to run my .exe without having to install anything. I can assume that everyone and their dog has 9.0b, but a good amount of casual users don't have 9.0c. I don't want to make someone install the new directx dll's to run my app.

Is there some way I can compile such that people with 9.0b (or more recent) are able to run my app without installing anything?

I'd rather not uninstall directx sdk's just to compile for 9.0b users. If there is a solution, I'm guessing it would have to do with the D3DCreate9(...) function and its parameter (which is the sdk version). But every document I've read claims that the defined DIRECTX_SDK_VERSION (I think thats what it is) is the only value that can be passed to the function.

Hope that clears it up. Is there any hope?
-------Harmotion - Free 1v1 top-down shooter!Double Jump StudiosBlog
Quote:Original post by blaze02
I just want someone that hasn't updated directX in passed year and a half to be able to run my .exe without having to install anything.
If you don't want the users to do any work then you have to do it for them. Go download the older 8.0/9.0/9.0a/9.0b SDK's and compile it against their target rather than your target.

Quote:Original post by blaze02
I can assume that everyone and their dog has 9.0b, but a good amount of casual users don't have 9.0c.
9.0c is a standard/compulsory OS level component in XP-SP2. The only conditional is the D3DX library. If you were really fussed about that then you could drop back to the Dec '04 SDK. Although, the best way is to just get used to installers - they aren't that scary!

Quote:Original post by blaze02
Is there some way I can compile such that people with 9.0b (or more recent) are able to run my app without installing anything?

I'd rather not uninstall directx sdk's just to compile for 9.0b users.
You're contradicting yourself!

On one hand you dont want your end user to have to do any hard work and on the other hand you dont want to do any hard work yourself... Make your mind up - either you make your end users jump through the hoops, or you do it for them. Otherwise you just end up with some sort of stale-mate [smile]


hth
Jack

<hr align="left" width="25%" />
Jack Hoxley <small>[</small><small> Forum FAQ | Revised FAQ | MVP Profile | Developer Journal ]</small>

This topic is closed to new replies.

Advertisement