Lassen Sie die Anwendung nach MSVCR110d.dll suchen

8

Ich habe eine C ++ - Anwendung mit Visual Studio 2012 erstellt. Ich habe versucht, sie auf einem anderen Computer laufen zu lassen, ohne dass VS2012 installiert ist, aber sie wird nicht ausgeführt. Es sucht weiter nach msvcr110d.dll (nicht msvcr110.dll), ich habe die Anwendung im Release-Modus erstellt, und ich habe meine Laufzeitbibliothek für Multithread-DLL (/ MD) eingestellt (obwohl ich alle Optionen mit Nein ausprobiert habe) nützen). Ich habe keine Ahnung, warum das nicht läuft. Auf dem Zielcomputer ist das Redistributable installiert. Irgendwelche Vorschläge?

    
GCSM 13.12.2012, 01:25
quelle

5 Antworten

3

Stellen Sie sicher, dass nicht nur die Lösung, die Sie erstellen, mit den Konfigurationen im Freigabemodus erstellt wird, sondern dass alle Abhängigkeiten auch die Nicht-Debug-DLLs verwenden. Wie Sie geschrieben haben, verwenden Sie importierte Bibliotheken (Freeglut), überprüfen Sie diese also auch. Da Freeglut Open-Source ist, möchten Sie es möglicherweise auch von Grund auf neu erstellen (im Freigabemodus), anstatt eine vorgefertigte DLL zu verwenden.

    
SztupY 13.12.2012, 15:53
quelle
4

Das Suffix d.dll steht für die Debug-Version der C ++ - Laufzeit-DLL. Dies bedeutet, dass Ihre Exe Debug Build ist, die MSVCR110d.dll benötigt.

Sie sollten den Release-Build Ihrer Exe bereitstellen, der MSVCR110.dll erfordert.

Bitten Sie den Benutzer, die VC2012-Laufzeit neu zu verteilen , MSVCR110.dll will installiert sein.

    
linquize 13.12.2012 01:30
quelle
1

Das Problem ist höchstwahrscheinlich, dass Freeglut eine Debug-Bibliothek und keine Release-Bibliothek ist und daher versucht, eine Verbindung zur Debug-Modus-DLL herzustellen. Es gibt wahrscheinlich auch eine Release-Modus-Version von Freeglut, und Sie müssen Ihre Projektkonfiguration ändern, um stattdessen diese Freeglut-Bibliothek zu verwenden.

Allerdings gibt es hier ein tieferes Problem: Wie können Sie das sicher überprüfen? Was passiert, wenn es eine andere Bibliothek gibt, die das Problem verursacht, oder was, wenn es in Ihrer eigenen ausführbaren Datei eine unbekannte Einstellung gibt? Ich habe das Tool Dependency Walker als sehr hilfreich gefunden. Seine Seite behauptet, dass es in Visual C ++ enthalten ist, aber ich konnte es in keiner meiner Visual C ++ - Installationen finden (vielleicht weil ich nicht alle optionalen Komponenten installiert habe). Beachten Sie, dass die enthaltene Hilfedatei auch für mich nicht funktionierte, aber Sie können den Inhalt der Hilfedatei auf der Webseite anzeigen.

Eine Ansicht der freeglut.dll-Abhängigkeiten. Ich habe die spezielle C Runtime hervorgehoben, die von dieser Version von FreeGLUT verwendet wird - deine ist wahrscheinlich anders. Die Liste der Funktionen auf der rechten Seite zeigt Ihnen, was MSVCRT exportiert, und die hervorgehobenen sind diejenigen, die scheinbar verwendet werden. Zum Beispiel sieht es so aus, als ob diese Version von FreeGLUT operator new verwendet. Wenn Ihre Namen fehlerhaft sind, drücken Sie F10, um die C ++ - Namen zu decorieren und die Funktionen zu sehen. Alle fehlenden DLLs erscheinen als "verzögerungsgeladene" DLLs (siehe die Sanduhr), also sind sie wahrscheinlich kein Problem.

Ich habe Dependency Walker verwendet, um eine Reihe von bösartigen DLL-Problemen zu ermitteln. Auch wenn es für Ihr spezielles Problem vielleicht zu viel ist, ist es doch schön zu wissen, mit welchen Tools Sie das Problem sehen können, anstatt nur zu folgern, dass es da ist.

    
AHelps 28.10.2014 17:20
quelle
0

Der schnelle und einfache Weg besteht darin, msvcr110d.dll von Ihrem Entwicklungscomputer auf den Zielrechner zu kopieren. Stellen Sie sicher, dass Sie das Verzeichnis aus dem Verzeichnis verwenden, das der Architektur entspricht, für die Ihre App erstellt wurde (Windows \ System32 oder Windows \ SysWOW64).

    
chud 06.02.2013 18:44
quelle
0

Sie müssen Visual C ++ Redistributable für Visual Studio 2012 installiert haben wenn Sie Release EXE oder DLL erstellt haben und versuchen, sie ohne Visual Studio 2012 auf dem Computer zu verwenden.

    
Berezh 20.09.2013 09:54
quelle

Tags und Links