Jump to content

Welcome to Geeks to Go - Register now for FREE

Geeks To Go is a helpful hub, where thousands of volunteer geeks quickly serve friendly answers and support. Check out the forums and get free advice from the experts. Register now to gain access to all of our features, it's FREE and only takes one minute. Once registered and logged in, you will be able to create topics, post replies to existing threads, give reputation to your fellow members, get your own private messenger, post status updates, manage your profile and so much more.

Create Account How it Works
Photo

C++ msvcr100d.dll driving me crazy


  • Please log in to reply

#1
Onaipian

Onaipian

    Notepad warrior

  • Retired Staff
  • 2,130 posts
Hey there,

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.

  • 0

Advertisements


#2
Onaipian

Onaipian

    Notepad warrior

  • Topic Starter
  • Retired Staff
  • 2,130 posts
Solved it!

Have no idea how I did it. Messed around with prototype functions as a learning experience, and now it doesn't depend on msvcr100d.dll! ^.^
  • 0






Similar Topics

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

As Featured On:

Microsoft Yahoo BBC MSN PC Magazine Washington Post HP