Hey - sorry if this is the wrong place for this.

I have this basic chess game I'm making, and I'm done with the first alpha build of it. It works fine when I compile it on my own computer, but when I bring the exe to a different computer, I get this error:

This application has failed to start becuase the application configuration is incorrect. Reinstalling the application may fix this problem.

Does anyone know how to fix this? I have the proper images in the same folder as the application. If anyone wants to try it for themselves: .

The program uses DirectX9. To my knowlege the computers I ran them on had DirectX, and even if they didn't, I'm under the impression that the program would at least run and give some sort of error once it gets to the DirectX code, not just refuse to run.

Dani AI

Generated

Short answer: the error is a Windows "side‑by‑side" (SxS) activation problem — Windows failed to load a required assembly (often a Visual C++ runtime or an optional DirectX component). and were on the right track: you need to identify which assembly is missing, then deploy the matching runtime. Use the Event Viewer / SideBySide entries or the SxSTrace tool to get the exact name. (learn.microsoft.com)

Practical diagnosis (on the target PC): run SxSTrace, reproduce the error, parse the trace, then inspect the text for "Resolving reference" lines that name the missing assembly. Example commands to run as Administrator:

sxstrace trace -logfile:c:\tmp\sxstrace.etl
# run the failing exe so the error appears
sxstrace parse -logfile:c:\tmp\sxstrace.etl -outfile:c:\tmp\sxstrace.txt

Open c:\tmp\sxstrace.txt (or check the Application log -> SideBySide) to see which Microsoft.VC* or DirectX component is not found. (learn.microsoft.com)

About your Release linker errors: those LNK2001 messages map to missing DirectX import libraries at link time. Add the appropriate DirectX libs to the Release configuration (Project → Properties → Linker → Input → Additional Dependencies). Typical ones for the functions you posted are: d3d9.lib, d3dx9.lib (D3DXCreateTextureFromFileEx / D3DXCreateSprite / D3DXCreateFont), dinput8.lib and dxguid.lib (DirectInput). After linking, deploy the DirectX redistributable (or run dxsetup from the SDK) so the target machine has the matching runtime DLLs. (learn.microsoft.com)

Packaging options: bundle and run the official VC++ redistributable(s) and the DirectX setup from your installer (they support silent installs), or avoid the VC++ dependency by building Release with the static CRT (Runtime Library = Multi‑threaded /MT) so you ship a single EXE (note: /MT has tradeoffs when mixing DLLs). Test your installer on a clean VM and never ship debug DLLs or copy system DLLs into system folders. (learn.microsoft.com)

Checklist: reproduce on a clean VM, run sxstrace / Event Viewer, install the matching VC++ redist(s) and DirectX redist, confirm Release/x86 vs x64 parity, or switch to /MT if you prefer a single-file deploy.

Recommended Answers

All 11 Replies

The computer that gets that error is missing one or more DLLs that are needed by the program. Make sure the program has been compiled for release mode instead of debug mode.

How do you do that in VC++ 08? Does that solve the DLL problem, or is that still the fault of the computer? Does that mean that the computer is missing the DirectX SDK?

>>How do you do that in VC++ 08?
On my computer which has the default installation, just under the Help menu at the top is a combo box that you can set to either Debug or Release. Make sure its set to Release when you compile the program.

>> Does that solve the DLL problem
Not necessarily. There may be other DLLs that are not installed on the other computer

>>or is that still the fault of the computer
No -- its your fault for failing to install the proper DLLs.

>>Does that mean that the computer is missing the DirectX SDK?
Not the SDK but there are probably some redistributable DLLs. Look in the Microsoft DirectX SDK folder under Program Files and find a folder Developer Runtime. Those might be the DLLs you need to install with your program. Just copy them into the same folder where you installed your program.

Um, what exactly does compiling it as release change, because I get linker errors when I do that. (debug is fine)

Um, what exactly does compiling it as release change

The release version of your program requires a different set of .dlls to be present on the target system.
What linker errors are you receiving?

The release version of your program requires a different set of .dlls to be present on the target system.
What linker errors are you receiving?

here's the log:

------ Build started: Project: Chess_2D, Configuration: Release Win32 ------
Linking...
dxgraphics.obj : error LNK2001: unresolved external symbol _D3DXCreateTextureFromFileExA@56
dxgraphics.obj : error LNK2001: unresolved external symbol _D3DXGetImageInfoFromFileA@8
dxgraphics.obj : error LNK2001: unresolved external symbol _D3DXLoadSurfaceFromFileA@32
dxgraphics.obj : error LNK2001: unresolved external symbol _Direct3DCreate9@4
dxinput.obj : error LNK2001: unresolved external symbol _GUID_SysMouse
dxinput.obj : error LNK2001: unresolved external symbol _c_dfDIMouse
dxinput.obj : error LNK2001: unresolved external symbol _DirectInput8Create@20
dxinput.obj : error LNK2001: unresolved external symbol _IID_IDirectInput8A
game.obj : error LNK2001: unresolved external symbol _D3DXCreateSprite@8
game.obj : error LNK2001: unresolved external symbol _D3DXCreateFontA@48
C:\Documents and Settings\Alec_2\Desktop\3D Chess Project\Chess_2D\Release\Chess_2D.exe : fatal error LNK1120: 10 unresolved externals
Build log was saved at "file://c:\Documents and Settings\Alec_2\Desktop\3D Chess Project\Chess_2D\Chess_2D\Release\BuildLog.htm"
Chess_2D - 11 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

>>Um, what exactly does compiling it as release change
I don't know exactly, but the debug version doubles the size of the executable because of all the stuff the compiler adds to make debugging easier, such as symbol names and line numbers and padding of data objects to make them bigger than you specified. The final release version of the program strips all that stuff out as well as optimizes code by changing some of it to make it run faster.

You have to tell the compiler the names of the DirectX *.lib files it is to use to link the program -- debug and release must be set up individually. When you set up the debug version you must have selected menu Project --> Properties --> Configuration Properties --> Linker --> Input then on the right side "Additional Dependencies" and listed the DirectX libraries there. You need to do the same thing for the release version. See the "Configuration" dropdown at the top of the left-hand pain.

Allright, now it compiles, but I asked my friend to run it and now he gets this message:

applicatin failed to start because its side by side configuration is incorrect. please see the application event log for more detail

What does that mean?

Same reason as before -- your friend's computer does not have the required DLLs.

Allright, now it compiles, but I asked my friend to run it and now he gets this message:

applicatin failed to start because its side by side configuration is incorrect. please see the application event log for more detail

What does that mean?

I'm not sure, but the event viewer (eventvwr.exe) Application log may contain more detailed information about the error (i.e. even the name(s) of the missing file(s), if any). So you may want to look into there.

It may be that installing the VS 2005 runtime components onto the offending machine solves this problem. These components are available at

Hey - thanks a bunch. I was using VC++ -8 so i used that redistributable package. It works now (I added one more DLL and then it worked). I currently just have the install file for the restributable files in the zip. Is there anyway to include the actual files in the zip, so that they don't have to install it? Or is there a way to just have one installer that does everything for you?

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.