MSVCP100D.dll requirement on release build exe, god why?!

Okay context. I’m using MSVC 2010 express and cocos2d-x 2.1.4 to make a game. And all was, while not hunky dory at least manageable until yesterday. Where I tried to release a win32 exe for testing, refinement, other people to do shit with.

But apparently this was not to be, even though I’ve got it firmly in release and not debug mode to build the exe, even though I’ve untangled/unchecked every cocos2d-x library (denshion, box2d, etc etc) except the core one in the build configuration to make sure they don’t interfere… It still compiles linked to the wrong version of the MSVC runtime dll. I’m not an expert at all the nobs and dials in the compiler settings so I have no idea what I need to do to make sure this doesn’t happen, I’ve never had this problem before.

The real solution is to compile in Release mode and distribute the VC++ 2010 redistributable package. Neither one is sufficient on its own.

Maybe make a quick installer that does this?

This is not the solution to the problem I have. MSVCP100D.dll is according to what research i’ve done before coming here not part of the runtime redistributable package. It’s a debug only version of the MSVCP100.dll DLL and not included in that package. The compiler should compile it with a dependency on MSVCP100.dll not MSVCP100D.dll because it’s in release mode. This is not the case, I do not know why it is not the case. I’d dearly like to know why this is not the case.

Do you have a different search path between debug and release?

Or can you statically link instead?

Or maybe this might help: http://blog.kalmbach-software.de/2008/05/03/howto-deploy-vc2008-apps-without-installing-vcredist_x86exe/

This. Is. Not. The. Problem. I’ve tried having them install the redistributable. The DLL isn’t in the redistributable because it’s a debug only DLL. The problem is that for reasons unknown it’s linking to the debug only version of the DLL not the version of the DLL that’s in the redistributable even though the compiler is in release configuration.

I will await help with the actual problem I am experiencing now.

Okay. Still need help as I do need to make sure that the game is in a working state and even refined a tad from its base condition before I use it for anything.

To reiterate:

  1. installing the MSVC redistributable runtime on any of the target machines does not fix the problem
  2. this is because the missing DLL is not part of the runtime redistributable
  3. The reason it requires the missing DLL is because something is going badly wrong in the compiling process and it’s linking to the WRONG version of the DLL.
    4. here is the entire program: [link removed] source code, project and everything so someone can figure out what went wrong to make it compile in release mode yet require the debug mode DLL.

To clarify on what I’m hoping: I’m hoping that someone knows what controls I need to adjust in order to make it compile in release mode and link to the release mode version of the MSVCP100.dll.

I used to have this problem before. U need to make sure u are building the release build on the tool bar…
On ur tool bar, there is a debug/release drop down box. if its debug press it and change it to release.
Else, ensure you are copying the right .exe file from the release folder.

Problem was resolved through application of recompiling everything and copying the dlls anew to the release package. So yes the solution was simple, but on the flipside it apparently eluded everyone who tried to help.

Anyway, problem is resolved.

With the updates with redistributable packages (this was made before over 3 more updates of the package) is there anything i should know? I tried to run my distributed game (ran fine on an abroad device) on a laptop. I got the 2015 redistributable and that only changed the messages endings from 140.dll to 110.dll

5 years later.

Good point, but it’s the only topic covering it, when i tried i was being “extremely off topic” so I didn’t want to cause a fuss and just leech on this