I've written an application using C++ which uses libcurl to upload a file. It runs and compiles fine. No problems. So I go ahead and transfer it to my XP 32-bit to check for compatibility issues. On startup, I get a "The program failed to start because MSVCR100d.DLL is missing from your computer. Try reinstalling the program to fix this problem." So, I go back to Visual Studio 2010, change the Run-Time Library settings to Multi-Threaded, compile and try again. That gives me some Linker errors, which I sorted out. Still nothing.
I couldn't seem to get it to work, so I changed my plans and have a self-extracting executable idea. Now, this is no problem, I can get it to work fine. Test it out and all is good. However, MSVCR100D.DLL is the debug version of the library, which means that it's not redistributable. So I go into Visual Studio again, change the build mode to release (which usually would change the libraries linked, yes?), build and run my application. It still wanted the debug library. So I tried a different approach: I renamed MSVCR100.DLL (redistributable) to MSVCR100D.DLL and ran the app. It gives me some bizarre error, which confirms that it wants the debug library.
So this is where I'm stuck. Any ideas, suggestions, or comments would be greatly appreciated. Even if someone wants to just pop-in and say that this is real tough one or something would be great. I just feel like on a game show and everyone watching knows the answer but I'm just completely oblivious.
EDIT: Using Dependency Walker I found which functions that the DLL is responsible for. It doesn't look like I can avoid using it by using alternative functions. So I guess the question now is why VS2010 is using the debug library in release mode.
UPDATE: I rebuilt libcurl.lib using release settings. I guess the first time I did it was with debug settings. Anyway, using dependency walker, I can see that msvcr100.dll is now required (Good) but msvcr100d.dll is still too (Bad). However, at this point, it's looking like msvcrt.dll is a better replacement. I renamed it to msvcr100d and ran Dependency Walker, and I've narrowed it down to 5 broken debug functions. I'm getting there!
Edited by piano9playa5, 25 July 2010 - 10:23 AM.