webentwicklung-frage-antwort-db.com.de

C++ - Fehler beim Starten (0xc0150002)

Ich versuche, eine OpenCV-Anwendung über Microsoft Visual C++ 2010 Express auszuführen und erhalte die folgende Meldung:

enter image description here

Wie kann ich dieses Problem lösen?

16
Simplicity

Ich stimme mit Brandrew überein, das Problem wird höchstwahrscheinlich durch einige fehlende DLLs verursacht, die weder im Systempfad noch in dem Ordner gefunden werden können, in dem sich die ausführbare Datei befindet. Versuchen Sie, die folgenden DLLs in der Nähe der ausführbaren Datei abzulegen:

  • die Visual Studio C++ - Laufzeitumgebung (in VS2008 konnten sie an Orten wie C:\Programme\Microsoft Visual Studio 9.0\VC\redist\x86 gefunden werden.) Fügen Sie alle 3 Dateien DLL sowie das Manifest ein Datei.
  • die vier OpenCV-DLLs (cv210.dll, cvaux210.dll, cxcore210.dll und highgui210.dll oder diejenigen, die Ihre OpenCV-Version hat)
  • wenn das immer noch nicht funktioniert, probieren Sie die Debug-VS-Laufzeitumgebung (ausführbare Dateien, die für "Debug" kompiliert wurden, verwenden einen anderen Satz von DLLs, die etwa "msvcrt9d.dll" heißen; wichtiger Teil ist das "d").

Versuchen Sie alternativ, die ausführbare Datei in Dependency Walker ( http://www.dependencywalker.com/ ) zu laden. Sie sollte auf die fehlenden DLLs hinweisen.

11
Latanius

In meinem Fall Visual Leak Detector , mit dem ich Speicherverluste in Visual Studio 2015 aufspürte, fehlte die Microsoft-Manifestdatei Microsoft.DTfW.DHL.manifest. Siehe Link Building Visual Leak Detector ganz nach unten. Diese Datei muss sich in dem Ordner befinden, in dem sich vld.dll oder vld_x64.dll in Ihrer Konfiguration befindet, beispielsweise C:\Program Files (x86)\Visual Leak Detector\bin\Win32, C:\Program Files (x86)\Visual Leak Detector\bin\Win64, Debug oder x64/Debug.

6
LastBlow

Führen Sie einfach die .exe-Datei im Abhängigkeits-Walker ( http://dependencywalker.com/ ) .__ aus. Sie zeigt die fehlenden DLLs und lädt diese herunter (www.dll-files.com) und fügt sie in die c: windows: system32 und der Ordner als Ihre .exe und geben sogar den Pfad dieser DLL in Pfadvariable an.

1
akash

Ich habe diese Fehlermeldung erhalten, als ich versuchte, die Lösungsdatei meines Freundes nach der Konvertierung in die 2010-Version von Visual Studio 2010 auszuführen. Das Update ist einfach. Ich erstelle ein neues Projekt. Klicken Sie mit der rechten Maustaste auf die Lösung, um vorhandene .cpp- und .h-Dateien aus dem Projekt meines Freundes hinzuzufügen. Dann klappt es.

1
huy_gm

Ich nehme an, das ist ein Vista-Fenster! Ich habe dies oft bekommen, als ich zuerst versuchte, ein DirectX-Programm von XPsp3 nach Vista zu portieren.

Es ist ein DLL-Problem. Die OpenCV-Datei runtime.dll ruft eine system.dll auf, die nicht mehr mit Vista ausgeliefert wird. Daher müssen Sie leider etwas suchen, um herauszufinden, welche system.dll sie zu finden versucht. (system.dll könnte vc2010 oder Vista sein)

Dieser Fehler wird auch durch eine fehlerhafte Installation von DLLs verursacht (d. H. Wird nicht ausgerollt) Hth Glückliche Jagd

1
Brandrew

Sogar ich hatte den gleichen Fehler, ich habe ihn danach behoben ... Zwei Dinge, die Sie untersuchen müssen

  1. Ob Ihr Systempfad in Ihren Umgebungsvariablen korrekt festgelegt ist
  2. Überprüfen Sie die Vorprozessoren in Projekteigenschaften -> c/c ++ -> Vorprozessoren. Prüfen Sie, ob Sie _CONSOLE angegeben haben. Dies hat einen Fehler für mich verursacht. Für einige Anwendungen müssen Sie WIN32;_WINDOWS;_CONSOLE;_DEBUG;QT_DLL;QT_GUI_LIB;QT_NETWORK_LIB;QT_CORE_LIB;COIN_DLL;SOQT_DLL;QT_DEBUG; angeben.

Ich habe diesen Fehler erhalten, während ich in coin3D Application gearbeitet habe.

0
user2716873

Das ist, weil ein DLL vorhanden ist, das Ihr Programm fehlt oder nicht finden kann.

In Ihrem Fall vermisse ich die openCV-DLLs. Diese finden Sie im "build" -Verzeichnis, das mit dem offenen Lebenslauf geliefert wird. Wenn Sie VS2010 verwenden und ein x86-Programm erstellen, können Sie Ihre DLLs hier unter "opencv\build\x86\vc10\bin" finden. Kopieren Sie einfach alle diese Dateien in Ihre Debug- und Release-Ordner, um die Probleme zu beheben.

Im Allgemeinen können Sie dieses Problem mit dem folgenden Verfahren beheben:

  1. Laden Sie Dependency Walker hier herunter: http://www.dependencywalker.com/
  2. Laden Sie Ihre EXE-Datei in Dependency Walker (unter dem Ordner "Debug" oder "Release" Ihres Projekts). In Ihrem Fall wäre dies "DisplayImage.exe"
  3. Suchen Sie nach fehlenden oder beschädigten DLLs oder nach falscher Architektur (d. H. X64 statt x86). Diese werden rot hervorgehoben.
  4. Für jedes DLL, das Sie vermissen, kopieren Sie entweder Ihre Debug- oder Release-Ordner mit Ihrer EXE-Datei oder installieren Sie die erforderliche Software oder fügen Sie den Pfad zu den DLLs zu Ihren Umgebungsvariablen hinzu (Win + Pause -> Advanced System Settings) -> Umgebungsvariablen)

Denken Sie daran, dass Sie diese DLLs im selben Verzeichnis wie Ihre .exe haben müssen. Wenn Sie die EXE-Datei aus dem Release-Ordner an einen anderen Ort kopieren, benötigen Sie auch diese DLLs, die mit der EXE-Datei kopiert wurden. Zur Portabilität neige ich dazu, eine virtuelle Maschine mit einer Neuinstallation von Windows zu testen (keine Updates oder Programme installiert), und ich gehe die Abhängigkeiten mit dem Dependency Walker einzeln durch, bis das Programm problemlos ausgeführt wird.

Dies ist ein häufiges Problem. Siehe auch diese Fragen:

Vc ++ kann nicht ausgeführt werden, Fehlercode 0xc0150002

Die Anwendung konnte nicht gestartet werden (0xc0150002) mit libcurl C++ Windows 7 VS 2010

0xc0150002 Fehler beim Ausführen von VC++ libcurl

Die Anwendung konnte nicht ordnungsgemäß gestartet werden. 0xc150002

Die Anwendung konnte nicht korrekt gestartet werden (0 * 0150002) - OpenCv

Viel Glück!

0
ALM865

Ich traf ein solches Problem. Visual Studio 2008 hat eindeutig gesagt: Problem wurde durch libtiff.dll verursacht. Es kann nicht aus irgendeinem Grund geladen werden, verursacht durch sein Manifest (tatsächlich hat diese DLL überhaupt kein Manifest). Ich habe das Problem behoben, als ich libtiff.dll aus meinem Projekt entfernt hatte (gleichzeitig verlor ich jedoch die Fähigkeit, komprimierte TIFFs zu öffnen!). Ich habe die oben genannte DLL neu kompiliert, aber das Problem bleibt bestehen. Interessanterweise habe ich an meinem eigenen Rechner keinen solchen Fehler. Drei andere Comps weigerten sich, mein Prog zu laden. Beachtung!!! Hier http://www.error-repair-tools.com/ppc/error.php?t=0xc0150002 Ein kluger Junge hat geschrieben, dass dieser Fehler durch ein Problem mit der Registrierung verursacht wurde und Reparatur-Tool anbietet. Ich habe die Vermutung, dass dieses "Reparatur-Tool" bösartige Software auf Ihrem Computer installiert. 

0
Andrew

In unserem Fall (neben dem Ausprobieren von Dependency Walker) war es eine fehlerhafte Manifestdatei, die 64 Bit und 32 Bit mischte. Wir verwenden im Debug-Modus zwei zusätzliche Dateien: dbghelp.dll und Microsoft.DTfW.DHL.manifest . Die Manifestdatei sieht folgendermaßen aus:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- $Id -->
<Assembly xmlns="urn:schemas-Microsoft-com:asm.v1" manifestVersion="1.0">
    <noInheritable />
    <assemblyIdentity type="win32" name="Microsoft.DTfW.DHL" version="6.11.1.404" processorArchitecture="x86" />
    <file name="dbghelp.dll" />
</Assembly>

Beachten Sie das Feld "processorArchitecture". Es wurde auf "AMD64" anstelle von "x86" gesetzt. Es ist wahrscheinlich nicht immer die Ursache, aber in unserem Fall war es die Hauptursache, daher kann es für einige hilfreich sein. Für 64-Bit-Läufe benötigen Sie "AMD64".

0
Ruud van Gaal