Deploying with D3DX

Started by
13 comments, last by Xtro 12 years, 8 months ago
[font=Verdana, Arial, Helvetica, sans-serif][size=2]
I am developing my application using d3dx functions. but when I deploy it to a fresh PC (which has no SDK installation) it doesn't run. And I saw an information in directx SDK that says that :

"The D3DX library included in this release is dependant on the Direct3D runtimes that shipped with this SDK. Applications linking against the version of D3DX in this release must also redistribute the runtime from this SDK."

I don't know how to redistribute the sdk runtime. I am installing redistributable files and it doesn't work. Then I am copying developer runtime dlls to application folder or system32 folder manually but it still doesn't work.
It only works when I install the SDK to the fresh PC. But I can't install the huge SDK to all my clients' computers.

I wonder how you guys are deploying your application which is using d3dx functions.

please help. Thank you.[/font]
Advertisement
Hello

Personnally, I have to run the dx installer and install vcredist at install so that my program runs on other computers

Hello

Personnally, I have to run the dx installer and install vcredist at install so that my program runs on other computers


This, basically. Always use the proper installers, manually copying and pasting DLLs will only end in tears.

Direct3D has need of instancing, but we do not. We have plenty of glVertexAttrib calls.

Guys, Thank you for your answers but I am still very confused. Because Neither Redist files from SDK nor web installer installs some of required DLLs like D3D10SDKLayers.DLL or D3DX10d_42.dll. They are named as "Developer" runtime and end-user installers doesn't install them. Right....

But !!! As it is written in the SDK documentation... If you are using D3DX10 or 11, I mean if you are linking against lib files which their name has a "d" letter at the end, you have to install developer runtime from the SDK.

When I compile my application, it asks for d3dx10d.lib file because I am including D3DX10.h header file in the code. I don't know why but even if I build as Release version from Visual Studio, linker asks for developer lib files. So, compiled exe needs developer dlls.

I think I need to find a way to compile my application without developer lib files. I tried to remove developer lib files from my lib source folder, It didn't help because linker is asking for those files. Then I defined the compiler directive D3D10_IGNORE_SDK_LAYERS at the beginning of my application but linker is still asking for developer lib files :( :(
In my engine, I use the following library statements:

// Library imports
#pragma comment( lib, "d3d11.lib" )
#pragma comment( lib, "d3dx11.lib" )
#pragma comment( lib, "d3dx10.lib" )
#pragma comment( lib, "DXGI.lib" )
#pragma comment( lib, "d3d9.lib" )


Is there a reason you need to link only to the debug version of the library in a release build? Perhaps you have a debug flag defined somewhere in your code?

In my engine, I use the following library statements:

// Library imports
#pragma comment( lib, "d3d11.lib" )
#pragma comment( lib, "d3dx11.lib" )
#pragma comment( lib, "d3dx10.lib" )
#pragma comment( lib, "DXGI.lib" )
#pragma comment( lib, "d3d9.lib" )


Is there a reason you need to link only to the debug version of the library in a release build? Perhaps you have a debug flag defined somewhere in your code?


but is'nt that the same as adding those :ib's to the linker option in VS ?
but just on the file level.

Never say Never, Because Never comes too soon. - ryan20fun

Disclaimer: Each post of mine is intended as an attempt of helping and/or bringing some meaningfull insight to the topic at hand. Due to my nature, my good intentions will not always be plainly visible. I apologise in advance and assure you I mean no harm and do not intend to insult anyone.


[quote name='Jason Z' timestamp='1312617136' post='4845351']
In my engine, I use the following library statements:

// Library imports
#pragma comment( lib, "d3d11.lib" )
#pragma comment( lib, "d3dx11.lib" )
#pragma comment( lib, "d3dx10.lib" )
#pragma comment( lib, "DXGI.lib" )
#pragma comment( lib, "d3d9.lib" )


Is there a reason you need to link only to the debug version of the library in a release build? Perhaps you have a debug flag defined somewhere in your code?


but is'nt that the same as adding those :ib's to the linker option in VS ?
but just on the file level.
[/quote]
I'm pretty sure it is the same thing - my point in showing them is that I don't use the debug versions of the libraries at all.

I took a quick look through D3DX10.h, but didn't see anything requiring the library to include that the OP specified. Do you know more precisely which portion of the header file requires you to include that library?
I think this runtime problem is not only my problem. I mean I don't think I am doing something wrong.

I compiled Tutorial02 from SDK (both debug and release) then copied the bin folders to a fresh windows 7. it didn't work either. Tutorial02 doesn't use and SDK specific media file. So, I think it should work on fresh windows 7 without SDK installed.

a)Debug version is showing a message box saying D3DX10d_42.dll is missing. and it closes the application instantly after that message.
b)Release version doesn't show the message box and it automatically closes the application window.
c)I copied the DLL into debug bin folder manually. Debug version didn't show the error message again but closed instantly like Release version.

I think I need to solve that problem before I fix my own application. Because my project is writing a DX wrapper library for .NET environment like SlimDX or other. And I am implementing SDK tutorials(with C#) in my project to prove that my library can run DK tutorials. But now, I am suspending my project. Because I don't want to deal with .net or other problems.

*** My current problem is to deploy any C++ D3DX application to a fresh windows.

1) How can I run the Tutorial02 on a fresh windows 7 ? Btw, fresh windows has dx end-user web installer installed.
2) Can anyone create a very simple project deployable for me ? I would be happy if you send me the vs2008 project folder and I can build it and I can try it on fresh windows. The Project can be simple as Tutorial02.

thank you.
Does Tutorial02 need to load some additional files like texture or hlsl shaders? Maybe it simply can't find them?
Try adding "printf/msgbox debugging" - add few printfs or message boxes between statements to see where program terminates/crashes.
You need to install the Visual C++ end-user runtimes for the version you're using. For a 32-bit app built with VS 2008 without service pack 1, you need to install this. With SP1, you need this.

This topic is closed to new replies.

Advertisement