Sign in to follow this  

not compiling with directx10

This topic is 4239 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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?

Share this post


Link to post
Share on other sites
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


[* due to its connections to the media SDK and its roots in ActiveMovie, it always felt a tad uncomfortable in the DirectX SDK IMO, so while the move is a pain for breaking builds, it's the right thing in the long run.]



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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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 :)

Share this post


Link to post
Share on other sites
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)?

Share this post


Link to post
Share on other sites
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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
Quote:
Original post by blaze02
I'd rather not uninstall directx sdk's just to compile for 9.0b users.


Why would you have to uninstall anything ?

You can make two sdk versions cohabit, in the end it's just library files and headers.. You even can and are encouraged to put them in your source repository and integrated with your build system.

Otherwise it would be hell, a new version coming every two months with better documentation and new samples and as a result you wouldn't be able to compile your game anymore. Think about it.

Note that if you want to use shader model 3.0 and/or geometry instancing you cannot continue using dx9.0b, even for people with an old system that don't want to do the switch.

If you don't want to provide an installer AND you want to use those new features then you should make an comment on your website or when your app launches so that the user know where to download dx9.0c on Microsoft website. I'm sure it's part of Windows Update also.

LeGreg

Share this post


Link to post
Share on other sites

This topic is 4239 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this