Hi all,

I'm trying to build a program in visual studio 2008, when I build in debug mode, it runs just fine, but if I try to build in release mode, there are no errors but when the program runs I get this error:

The program can't start because MSVCR90D.dll is missing from your computer. Try reinstalling the program to fix this problem.

If I run the program in debug mode from within visual studio, it runs fine. If I go to the debug folder and run the exe it also runs fine. However, if I try to run the exe in the release folder I get the same error.

Any ideas?

Dani AI

Generated

Short expert note: this is the classic debug-vs-release CRT mismatch. was pointing in the right direction and ’s fix (replacing the third‑party debug build with a release build) is exactly the right outcome — debug CRTs (the ones whose names end with a d) are for development only and aren’t meant to be redistributed. (learn.microsoft.com)

Quick checklist to avoid the problem:

  • In your Release configuration set the Runtime Library consistently: Project → C/C++ → Code Generation → Runtime Library — use Multi-threaded DLL (/MD) for the shared CRT or Multi-threaded (/MT) to link the CRT statically. Every linked component (libs/DLLs) must be built with the same choice. (cnblogs.com)
  • If you depend on third‑party DLLs, use their release build (or rebuild them yourself in Release with matching runtime flags); do not ship debug DLLs.

How to find the offending module:

  • From a Visual Studio Developer Command Prompt run:

    dumpbin /dependents path\to\your.exe

    That shows the DLL imports; look for any *d.dll (debug) entries. For a GUI view use Dependency Walker or the modern open‑source [Dependencies] tool to inspect the chain of imports and spot which third‑party module pulls in the debug CRT. (github.com)

Extra troubleshooting tips:

  • Check Linker → Input → Additional Dependencies and the full build log for libraries with a d suffix or linker warnings (LNK4098/LNK2038) that indicate runtime mismatches.
  • Side‑by‑side manifests and WinSxS rules control which VC90 CRT gets loaded; if you see mysterious SxS errors investigate the embedded manifest or use a dependency tool to trace the exact assembly identity. If you ever must run a debug build on another machine only for testing, follow Microsoft’s guidance for test‑machine deployment — otherwise keep debug CRTs off release systems. (dependencywalker.com)

References: Microsoft guidance on what to redistribute and runtime selection, plus tools to inspect dependencies: Determine which DLLs to redistribute (MS), Use Run‑Time Library (/MD,/MT) (MS), Dependency Walker and Dependencies (links above).

Recommended Answers

All 2 Replies

MSVCR90D.dll is a debug DLL (which is what the D at the end means). Sounds like you are trying to mix files compiled for debug with others compiled for release mode. Calling DLLs compiled for debug may also produce that error.

Here are other suggestions to try

MSVCR90D.dll is a debug DLL (which is what the D at the end means). Sounds like you are trying to mix files compiled for debug with others compiled for release mode. Calling DLLs compiled for debug may also produce that error.

Here are other suggestions to try

Thank you! It's sorted! One of the Allegro dll's (Allegro_Monolith_Md) I was linking to was the debug version of the dll, swapped it out for the standard one and it worked!

I've been tearing my hair out over it and it was so simple, thanks again!

Lesson learned I guess :P

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.