OpenCV – DLL manquante, mais ce n’est pas?

J’essaie juste un programme de base avec OpenCV avec le code suivant:

#include "cv.h" #include "highgui.h" int main() { IplImage* newImg; newImg = cvLoadImage("~/apple.bmp", 1); cvNamedWindow("Window", 1); cvShowImage("Window", newImg); cvWaitKey(0); cvDestroyWindow("Window"); cvReleaseImage(&newImg); return 0; } 

Quand je lance ceci, je reçois

Le programme ne peut pas démarrer, car libcxcore200.dll est absent de votre ordinateur. Essayez de réinstaller le programme pour résoudre ce problème.

Cependant, je peux voir cette DLL. Ça existe. J’ai ajouté ce qui suit aux dépendances d’entrée pour mon éditeur de liens

C: \ OpenCV2.0 \ lib \ libcv200.dll.a C: \ OpenCV2.0 \ lib \ libcvaux200.dll.a C: \ OpenCV2.0 \ lib \ libcxcore200.dll.a C: \ OpenCV2.0 \ lib \ libhighgui200.dll.a

Ce qui donne? J’utilise Visual Studio 2008.

Lorsque je lie les fichiers .dll au lieu des fichiers .dll.a, je reçois

erreur irrécupérable LNK1107: fichier non valide ou corrompu: impossible de lire à 0x3F8 libcv200.dll

J’ai suivi les instructions sur http://opencv.willowgargarage.com/wiki/VisualC%2B%2B_VS2010 mais je suis resté bloqué sur exactement le même problème. Voici comment j’ai résolu le problème.

  1. Récupération de l’édition MSVC 2010 Express.

  2. Récupéré les fichiers binarys Win 32 OpenCV 2.2 et installé à l’emplacement par défaut.

  3. Créé nouveau projet.

  4. Configuration du projet

    Projet -> Propriétés OpenCV_Helloworld … Propriétés de configuration -> Répertoires VC ++

    Inclure les répertoires … append: C:\OpenCV2.2\include\;

    Répertoires de bibliothèque … ajoutez: C:\OpenCV2.2\lib;C:\OpenCV2.2\bin;

    Répertoires sources … append:

     C:\OpenCV2.2\modules\calib3d\src;C:\OpenCV2.2\modules\consortingb\src;C:\OpenCV2.2\modules\core\src;C:\OpenCV2.2\modules\features2d\src;C:\OpenCV2.2\modules\flann\src;C:\OpenCV2.2\modules\gpu\src;C:\OpenCV2.2\modules\gpu\src;C:\OpenCV2.2\modules\highgui\src;C:\OpenCV2.2\modules\imgproc\src;C:\OpenCV2.2\modules\legacy\src;C:\OpenCV2.2\modules\ml\src;C:\OpenCV2.2\modules\objdetect\src;C:\OpenCV2.2\modules\video\src; 

    Éditeur de liens -> Entrée -> Dépendances supplémentaires …

    Pour les versions de débogage … ajoutez:

     opencv_calib3d220d.lib;opencv_consortingb220d.lib;opencv_core220d.lib;opencv_features2d220d.lib;opencv_ffmpeg220d.lib;opencv_flann220d.lib;opencv_gpu220d.lib;opencv_highgui220d.lib;opencv_imgproc220d.lib;opencv_legacy220d.lib;opencv_ml220d.lib;opencv_objdetect220d.lib;opencv_video220d.lib; 

À ce stade, je pensais avoir terminé, mais j’ai rencontré le problème que vous avez décrit lors de l’exécution de l’exécutable en mode débogage. La dernière étape est évidente une fois que vous le voyez, sélectionnez:

Éditeur de liens -> Général … Définissez ‘Utiliser les entrées de dépendance de la bibliothèque’ sur ‘Oui’

J’espère que cela t’aides.

Ajoutez simplement C:\OpenCV2.0\bin dans votre variable d’environnement PATH

ou

Lorsque vous installez OpenCV,

Choisissez l’option, Add OpenCV to the system PATH for current user qui n’est pas un Add OpenCV to the system PATH for current user par défaut.

Juste pour votre information, après avoir ajouté le “PATH”, pour mon win7, je dois le redémarrer pour que cela fonctionne.

J’ai eu de nombreux problèmes d’openv et n’ai réussi qu’après 4 à 6 mois d’horreur. C’est le dernier problème que j’ai eu, mais tout ce qui précède n’a pas fonctionné. Ce qui a fonctionné pour moi a été de simplement copier-coller opencv_core2 * .dll (et opencv_highgui2 * .dll qu’il demandera puisque vous avez également inclus cela) dans le dossier de publication (ou de débogage – je suppose. ) du dossier de votre projet, où se trouve votre fichier d’application.

J’espère que cela t’aides!

Vous devez juste append le dossier du ou des fichiers dll nécessaires à votre système “Variables d’environnement” dans “Chemin”. Votre problème sera résolu à 100%. J’ai eu ce problème également.

Dans Visual Studio 2013, vous devez append ceci à Environment Variables , puis Restart votre ordinateur. C’est le chemin où se trouve le fichier .dll.

entrez la description de l'image ici

ouvrez simplement le dossier bin, copiez et collez les fichiers .dll dans le dossier sur lequel vous travaillez .. cela devrait régler le problème.

En ce qui concerne la réponse de @ Marc, je ne pense pas que VC utilise le chemin d’access depuis le système d’exploitation. Avez-vous ajouté le chemin d’access aux chemins de bibliothèque de VC? J’ajoute généralement les DLL au projet et les copie si elles sont plus récentes dans la construction et cela fonctionne très bien pour moi.

vous pouvez trouver le fichier opencv_core248 et d’autres dll dans le dossier opencv \ build \ x86 \ vc12 \ bin. Copiez simplement les dll dont vous avez besoin dans le dossier system32. Et votre application devrait commencer à fonctionner en un éclair! J’espère que ça aide.

Le “.a” à la fin de vos fichiers DLL est un problème, et ceux-ci sont là parce que vous n’avez pas utilisé CMAKE pour générer OpenCV 2.0. En outre, vous ne liez pas les fichiers DLL, vous liez les fichiers de bibliothèque, et encore une fois, la raison pour laquelle vous ne voyez pas les fichiers de bibliothèque corrects est que vous n’avez pas utilisé CMAKE pour générer OpenCV 2.0. Si vous souhaitez utiliser OpenCV 2.0, vous devez le générer pour qu’il fonctionne correctement dans Visual Studio. Si vous ne voulez pas le construire, je vous suggèrerais de passer à OpenCV 1.1pre, il est livré pré-construit et est beaucoup plus souple dans Visual Studio.

Une autre option (et celle que je recommanderais) consiste à abandonner OpenCV et à utiliser EmguCV. Je joue avec OpenCV depuis environ un an et les choses sont devenues beaucoup plus faciles lorsque je suis passé à EmguCV, car EmguCV fonctionne avec .NET. Vous pouvez donc utiliser un langage comme C # qui ne contient pas tous les fichiers C ++ de pointeurs, fichiers d’en-tête, et problème d’allocation de mémoire.

Et comme pour la question de 64 bits par rapport à 32 bits, OpenCV ne supporte pas officiellement le 64 bits. Pour être sûr, ouvrez les propriétés de votre projet et modifiez la “Cible de la plate-forme” sous l’onglet “Construction” de “Tout processeur” en “X86”. Cela doit être fait à tout moment avec OpenCV, même si vous utilisez un wrapper comme EmguCV.

Copier tous les fichiers .dll à partir de / bin dans System32

Copiez simplement les fichiers .dll dans C: \ windows \ system32 \.

Pas besoin de faire ça. C’est une erreur de studio visuel.

allez simplement ici: http://connect.microsoft.com/VisualStudio/Downloads/DownloadDetails.aspx?DownloadID=31354

et téléchargez le correctif correspondant au système d’exploitation de votre ordinateur

fermez visual studio, exécutez le correctif, puis redémarrez VS

Le code doit être exécuté sans erreur.