web-dev-qa-db-fra.com

C++ - impossible de démarrer correctement (0xc0150002)

J'essaie d'exécuter une application OpenCV via Microsoft Visual C++ 2010 Express et d'obtenir le message suivant:

enter image description here

Comment puis-je résoudre ce problème?

16
Simplicity

Je suis d'accord avec Brandrew, le problème est probablement causé par des dll manquantes qui ne peuvent pas être trouvées ni sur le chemin du système ni dans le dossier contenant l'exécutable. Essayez de placer les DLL suivantes à proximité du fichier exécutable:

  • le runtime Visual Studio C++ (dans VS2008, ils peuvent être trouvés à des endroits tels que C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\x86.) Incluez les 3 fichiers DLL ainsi que le manifeste fichier.
  • les quatre dll OpenCV (cv210.dll, cvaux210.dll, cxcore210.dll et highgui210.dll, ou celles de votre version OpenCV)
  • si cela ne fonctionne toujours pas, essayez le runtime VS de débogage (les fichiers exécutables compilés pour "Debug" utilisent un jeu différent de dll, nommé quelque chose comme msvcrt9d.dll, la partie importante est le "d")

Sinon, essayez de charger le fichier exécutable dans Dependency Walker ( http://www.dependencywalker.com/ ), il devrait signaler les DLL manquantes pour vous.

11
Latanius

Dans mon cas, Détecteur de fuite visuel J'utilisais pour rechercher les fuites de mémoire dans Visual Studio 2015 manquait le fichier manifeste Microsoft Microsoft.DTfW.DHL.manifest, voir lien Création d'un détecteur de fuite visuel tout en bas. Ce fichier doit être dans le dossier où vld.dll ou vld_x64.dll est dans votre configuration, par exemple C:\Program Files (x86)\Visual Leak Detector\bin\Win32, C:\Program Files (x86)\Visual Leak Detector\bin\Win64, Debug ou x64/Debug.

6
LastBlow

Il suffit d’exécuter le fichier .exe dans Dependency Walker ( http://dependencywalker.com/ ) Il vous indiquera les dll manquantes et les téléchargera (www.dll-files.com) et les coller c: windows: system32 et le dossier en tant que votre .exe et même fournir le chemin de ces dll dans la variable de chemin.

1
akash

J'ai eu cette erreur en essayant d'exécuter le fichier solution de mon ami avec Visual Studio 2010 après l'avoir converti en version 2010. Le correctif est facile, je crée un nouveau projet, cliquez avec le bouton droit de la souris sur la solution pour ajouter les fichiers .cpp et .h existants à partir du projet de mon ami. Alors ça marche.

1
huy_gm

Je suppose que c'est une fenêtre Vista! Je l'ai souvent eu lorsque j'ai d'abord essayé de porter un programme DirectX de XPsp3 vers Vista.

C'est un problème de .dll. OpenCV runtime.dll fera appel à un system.dll qui ne sera plus expédié sous Vista. Vous devrez donc malheureusement rechercher un peu le système qui cherche à obtenir system.dll. (system.dll pourrait être vc2010 ou Vista)

Cette erreur est également due à une installation incorrecte de .dlls (c’est-à-dire au non-déploiement) Hth Bonne chasse

1
Brandrew

Même si j’ai fait face à la même erreur, j’ai réglé le problème après coup…. Deux points à examiner:

  1. Si votre chemin système est correctement défini dans vos variables d'environnement
  2. Vérifiez les pré-processeurs dans Propriétés du projet-> c/c ++ -> Pré-processeurs. Vérifiez si vous avez inclus _CONSOLE, cela a causé une erreur pour moi. Pour certaines applications, vous devez inclure WIN32;_WINDOWS;_CONSOLE;_DEBUG;QT_DLL;QT_GUI_LIB;QT_NETWORK_LIB;QT_CORE_LIB;COIN_DLL;SOQT_DLL;QT_DEBUG;

J'ai eu cette erreur alors que je travaillais dans l'application Coin3D.

0
user2716873

C'est parce qu'il y a une DLL que votre programme est manquant ou introuvable.

Dans votre cas, je pense que vous manquez les dll openCV. Vous pouvez les trouver dans le répertoire "build" fourni avec CV ouvert. Si vous utilisez VS2010 et créez un programme x86, vous pouvez localiser vos dll ici sous "opencv\build\x86\vc10\bin". Copiez simplement tous ces fichiers dans vos dossiers Debug et Release et cela devrait résoudre vos problèmes.

En règle générale, vous pouvez résoudre ce problème à l'aide de la procédure suivante:

  1. Téléchargez Dependency Walker à partir d’ici: http://www.dependencywalker.com/
  2. Chargez votre fichier .exe dans Dependency Walker (sous le dossier de vos projets Debug ou Release). Dans votre cas, il s’agirait de DisplayImage.exe.
  3. Recherchez les DLL manquantes, corrompues ou ayant une architecture incorrecte (x64 au lieu de x86), elles seront surlignées en rouge.
  4. Pour chaque DLL qui vous manque, copiez-le dans vos dossiers Debug ou Release avec votre fichier .exe, ou installez le logiciel requis, ou ajoutez le chemin d'accès aux DLL à vos variables d'environnement (Win + Pause -> Paramètres système avancés -> Variables d'environnement)

N'oubliez pas que vous aurez besoin de ces DLL dans le même répertoire que votre fichier .exe. Si vous copiez le fichier .exe du dossier Version vers un autre emplacement, vous aurez également besoin de copier ces DLL avec le fichier .exe. Pour la portabilité, j'ai tendance à essayer de tester une machine virtuelle avec une nouvelle installation de Windows (aucune mise à jour ni programme installé), et je parcoure les dépendances à l'aide de Dependency Walker jusqu'à ce que le programme fonctionne correctement.

C'est un problème commun. Voir aussi ces questions:

Impossible d'exécuter vc ++, code d'erreur 0xc0150002

L'application n'a pas pu démarrer (0xc0150002) avec libcurl C++ Windows 7 VS 2010

0xc0150002 Erreur lors de la tentative d'exécution de VC++ libcurl

L'application n'a pas pu démarrer correctement 0xc150002

L'application n'a pas pu démarrer correctement (0 * 0150002) - OpenCv

Bonne chance!

0
ALM865

J'ai rencontré un tel problème. Visual Studio 2008 a clairement indiqué que le problème était causé par libtiff.dll. Il ne peut pas être chargé pendant un certain temps à cause de son manifeste (en fait, cette dll n’a aucun manifeste). Je l'ai corrigé, quand j'avais supprimé libtiff.dll de mon projet (mais simultanément, j'ai perdu la possibilité d'ouvrir des fichiers TIFF compressés!). J'ai recompilé dll susmentionné, mais le problème reste toujours. Intéressant, que sur ma propre machine, je n’ai pas une telle erreur. Trois autres compères ont refusé de charger mon prog. Attention!!! Voici http://www.error-repair-tools.com/ppc/error.php?t=0xc0150002 un sage garçon a écrit, que cette erreur a été causée par un problème avec le registre et offre un outil de réparation. Je suppose que cet "outil de réparation" va installer des logiciels malveillants sur votre ordinateur. 

0
Andrew

Dans notre cas (après avoir essayé Dependency Walker), il s’agissait d’un fichier manifeste défectueux, mélangeant 64 bits et 32 ​​bits. Nous utilisons deux fichiers supplémentaires lors de l'exécution en mode débogage: dbghelp.dll et Microsoft.DTfW.DHL.manifest . Le fichier manifeste ressemble à ceci:

<?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>

Remarquez le champ 'processorArchitecture'. Il a été réglé sur "AMD64" au lieu de "x86". Ce n’est probablement pas toujours la cause, mais dans notre cas c’était la cause première, alors cela peut être utile à certains. Pour les exécutions 64 bits, vous voudrez "AMD64".

0
Ruud van Gaal