Ich versuche, eine OpenCV
-Anwendung über Microsoft Visual C++ 2010 Express
auszuführen und erhalte die folgende Meldung:
Wie kann ich dieses Problem lösen?
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:
Versuchen Sie alternativ, die ausführbare Datei in Dependency Walker ( http://www.dependencywalker.com/ ) zu laden. Sie sollte auf die fehlenden DLLs hinweisen.
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
.
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.
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.
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
Sogar ich hatte den gleichen Fehler, ich habe ihn danach behoben ... Zwei Dinge, die Sie untersuchen müssen
_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.
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:
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!
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.
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".