2016-09-15 1 views
-1

Ich habe ein C++ - Programm mit OpenGl in Visual Studio 2015 für Windows 7 geschrieben. Ich kompilierte meinen Code mit "Release" statt "Debug". Das Programm funktioniert auf meinem Computer einwandfrei, aber wenn ich auf einen anderen Computer umschalte, schlägt das Programm fehl. Ich erhalte die Fehlermeldung:Link zu einer bestimmten DLL-Datei in Visual Studio?

Das Programm kann nicht gestartet werden, weil MSVCP140D.dll von Ihrem Computer fehlt. Versuchen Sie das Programm neu zu installieren, um dieses Problem zu beheben.

Ich möchte für mein Programm auf anderen Computern arbeiten, so dass ich nicht die neuesten Treiber oder Bibliotheken installieren muss, damit es funktioniert. Ich habe MSVCP140D.dll auf meinem ersten Computer, aber ich habe nur MSVCP120.dll auf meinem anderen Computer. Wie kompiliere ich meinen Code, so dass MSVCP140D.dll nicht erforderlich ist, aber stattdessen mit MSVCP120.dll funktioniert?

+0

* D.dll sind Debug-DLLs, Sie haben Ihre Freigabeeinstellungen falsch eingestellt. –

+0

Warum soll es mit MSVCP120.DLL funktionieren? Sie müssen die entsprechenden DLLs bereitstellen, unabhängig davon, welche Version von Visual Studio Sie ausführen. Sie können nicht erwarten, dass eine Version dieser DLLs verfügbar ist, ob * 140.DLL von MSVC 2015 oder * 120.DLL von MSVC 2013. Oder statisch verknüpfen, wie shrike sagt. – Hieronymus

Antwort

2

Stellen Sie zunächst sicher, dass die Buildeinstellungen für die Buildversion korrekt sind: MSVCP140D.dll ist die Debug-DLL der Visual Studio 2015-Laufzeit; Die Release-Version dieser Bibliothek ist MSVCP140.dll.

Wenn Sie dies behoben haben, können Sie die Visual C++ Redistributable for Visual Studio 2015 auf dem Zielcomputer installieren, auf dem Sie Ihr Programm ausführen möchten: Dadurch wird die fehlende Bibliothek installiert. Beachten Sie, dass das VC++ redistributable die Debug-Bibliotheken (MSVCP140D.dll) nicht installiert, sondern die Release-Bibliotheken (MSVCP140.dll).

Eine andere Option besteht darin, Ihr Programm mit statischer Verknüpfung zur Visual C++ - Laufzeit neu zu erstellen. Öffnen Sie den Dialog Projekteigenschaften und wählen Sie unter "Konfigurationseigenschaften -> C/C++ -> Codegenerierung" im Feld "Laufzeitbibliothek" die Option "Multi-threaded (/ MT)". Auf diese Weise muss das VC++ redistributable nicht auf dem Zielcomputer installiert werden.

+0

Für andere da draußen - ich musste auch sicherstellen, dass ich meine Bibliotheken von VC 2015 zu VC 2013 wechselte. Bis ich dies tat, lösten diese Schritte mein Problem nicht. –

1

Sie müssen Visual Studio 2013 installieren, um eine Verbindung mit MSVCP .dll herstellen zu können (Sie können weiterhin MSVC 2015 verwenden, aber 2013 als Toolchain auswählen). Sobald MSVC 2013 installiert ist, können Sie es in den Projekteinstellungen -> Platform Toolset auswählen.

Oder verknüpfen Sie Ihre Anwendung statisch (ändern Sie zu /MT in Code Generation Einstellungen). Dann benötigt Ihre App keine MSVC-DLL zum Ausführen (aber es wird größer).

Oder installieren Sie die VC 2015 Redistributable package auf Ihrem anderen Computer.

+0

Wo wähle ich 2013 aus? Du hast gesagt, es ist die Toolchain, wo ist das? –

+1

Sobald MSVC 2013 installiert ist, können Sie es in den Projekteinstellungen -> Platform Toolset auswählen. – rustyx

+0

Auch wenn ich zu/MT ändere, bekomme ich eine Menge Fehler, wenn ich kompiliere. Ich bekomme die Fehler nicht mit/MD –

Verwandte Themen