IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenCV Discussion :

Erreur LNK2019 avec VS2010 et OpenCV 2.4


Sujet :

OpenCV

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    Points : 8
    Points
    8
    Par défaut Erreur LNK2019 avec VS2010 et OpenCV 2.4
    Bonjour,

    Depuis hier j'essaye de faire marcher opencv 2.4 avec visual studio 2010 mais je n'y arrive pas. J'ai suivi à la lettre leur tutorial mais rien n'y fait.

    J'ai le .exe du site officiel et je suis le tuto. J'ouvre l'exe et j'extrais dans mon D:\.

    Ensuite je vais à la partie "Set the OpenCV enviroment variable and add it to the systems path". Là premier problème il est écrit d’exécuter la commande suivante : setx -m OPENCV_DIR D:\OpenCV\Build\Install. Or moi je n'ai pas le dossier install dans mon dossier build. J'écris la commande sans \install. (j'ai vérifié dans les chemins, OPENCV_DIR s'est bien ajouté)

    Ensuite il faut inclure le dossier "bin" dans le path pour qu'il trouve les DLL (si j'ai bien compris). Là pas de soucis, celui que je pense être le bon est celui-ci : opencv\build\x64\vc10\bin.

    Après j'ai tout fait comme il faut, créer une feuille de propriétén etc... Seul problème, dans "Éditeur de lien" -> "entrée", je ne vois pas les lib dans "Dépendances Supplémentaires". et rien ne marche (Error LNK2019).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    1>Test.obj : error LNK2019: symbole externe non résolu _cvWaitKey référencé dans la fonction _main
    1>Test.obj : error LNK2019: symbole externe non résolu "void __cdecl cv::imshow(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class cv::_InputArray const &)" (?imshow@cv@@YAXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV_InputArray@1@@Z) référencé dans la fonction _main
    1>Test.obj : error LNK2019: symbole externe non résolu "public: __thiscall cv::_InputArray::_InputArray(class cv::Mat const &)" (??0_InputArray@cv@@QAE@ABVMat@1@@Z) référencé dans la fonction _main
    1>Test.obj : error LNK2019: symbole externe non résolu _cvMoveWindow référencé dans la fonction _main
    1>Test.obj : error LNK2019: symbole externe non résolu "void __cdecl cv::namedWindow(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int)" (?namedWindow@cv@@YAXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) référencé dans la fonction _main
    1>Test.obj : error LNK2019: symbole externe non résolu "public: virtual double __thiscall cv::VideoCapture::get(int)" (?get@VideoCapture@cv@@UAENH@Z) référencé dans la fonction _main
    1>Test.obj : error LNK2019: symbole externe non résolu "public: virtual __thiscall cv::VideoCapture::~VideoCapture(void)" (??1VideoCapture@cv@@UAE@XZ) référencé dans la fonction _main
    1>Test.obj : error LNK2019: symbole externe non résolu "public: virtual bool __thiscall cv::VideoCapture::isOpened(void)const " (?isOpened@VideoCapture@cv@@UBE_NXZ) référencé dans la fonction _main
    1>Test.obj : error LNK2019: symbole externe non résolu "public: __thiscall cv::VideoCapture::VideoCapture(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (??0VideoCapture@cv@@QAE@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) référencé dans la fonction _main
    1>Test.obj : error LNK2019: symbole externe non résolu "void __cdecl cv::fastFree(void *)" (?fastFree@cv@@YAXPAX@Z) référencé dans la fonction "public: __thiscall cv::Mat::~Mat(void)" (??1Mat@cv@@QAE@XZ)
    1>Test.obj : error LNK2019: symbole externe non résolu "public: void __thiscall cv::Mat::deallocate(void)" (?deallocate@Mat@cv@@QAEXXZ) référencé dans la fonction "public: void __thiscall cv::Mat::release(void)" (?release@Mat@cv@@QAEXXZ)
    1>Test.obj : error LNK2019: symbole externe non résolu "class cv::Scalar_<double> __cdecl cv::sum(class cv::_InputArray const &)" (?sum@cv@@YA?AV?$Scalar_@N@1@ABV_InputArray@1@@Z) référencé dans la fonction "double __cdecl getPSNR(class cv::Mat const &,class cv::Mat const &)" (?getPSNR@@YANABVMat@cv@@0@Z)
    1>Test.obj : error LNK2019: symbole externe non résolu "public: class cv::MatExpr __thiscall cv::Mat::mul(class cv::_InputArray const &,double)const " (?mul@Mat@cv@@QBE?AVMatExpr@2@ABV_InputArray@2@N@Z) référencé dans la fonction "double __cdecl getPSNR(class cv::Mat const &,class cv::Mat const &)" (?getPSNR@@YANABVMat@cv@@0@Z)
    1>Test.obj : error LNK2019: symbole externe non résolu "public: void __thiscall cv::Mat::convertTo(class cv::_OutputArray const &,int,double,double)const " (?convertTo@Mat@cv@@QBEXABV_OutputArray@2@HNN@Z) référencé dans la fonction "double __cdecl getPSNR(class cv::Mat const &,class cv::Mat const &)" (?getPSNR@@YANABVMat@cv@@0@Z)
    1>Test.obj : error LNK2019: symbole externe non résolu "void __cdecl cv::absdiff(class cv::_InputArray const &,class cv::_InputArray const &,class cv::_OutputArray const &)" (?absdiff@cv@@YAXABV_InputArray@1@0ABV_OutputArray@1@@Z) référencé dans la fonction "double __cdecl getPSNR(class cv::Mat const &,class cv::Mat const &)" (?getPSNR@@YANABVMat@cv@@0@Z)
    1>Test.obj : error LNK2019: symbole externe non résolu "public: __thiscall cv::_OutputArray::_OutputArray(class cv::Mat &)" (??0_OutputArray@cv@@QAE@AAVMat@1@@Z) référencé dans la fonction "double __cdecl getPSNR(class cv::Mat const &,class cv::Mat const &)" (?getPSNR@@YANABVMat@cv@@0@Z)
    1>Test.obj : error LNK2019: symbole externe non résolu "class cv::Scalar_<double> __cdecl cv::mean(class cv::_InputArray const &,class cv::_InputArray const &)" (?mean@cv@@YA?AV?$Scalar_@N@1@ABV_InputArray@1@0@Z) référencé dans la fonction "class cv::Scalar_<double> __cdecl getMSSIM(class cv::Mat const &,class cv::Mat const &)" (?getMSSIM@@YA?AV?$Scalar_@N@cv@@ABVMat@2@0@Z)
    1>Test.obj : error LNK2019: symbole externe non résolu "class cv::_OutputArray const & __cdecl cv::noArray(void)" (?noArray@cv@@YAABV_OutputArray@1@XZ) référencé dans la fonction "class cv::Scalar_<double> __cdecl getMSSIM(class cv::Mat const &,class cv::Mat const &)" (?getMSSIM@@YA?AV?$Scalar_@N@cv@@ABVMat@2@0@Z)
    1>Test.obj : error LNK2019: symbole externe non résolu "void __cdecl cv::divide(class cv::_InputArray const &,class cv::_InputArray const &,class cv::_OutputArray const &,double,int)" (?divide@cv@@YAXABV_InputArray@1@0ABV_OutputArray@1@NH@Z) référencé dans la fonction "class cv::Scalar_<double> __cdecl getMSSIM(class cv::Mat const &,class cv::Mat const &)" (?getMSSIM@@YA?AV?$Scalar_@N@cv@@ABVMat@2@0@Z)
    1>Test.obj : error LNK2019: symbole externe non résolu "class cv::MatExpr __cdecl cv::operator+(class cv::Mat const &,class cv::Mat const &)" (??Hcv@@YA?AVMatExpr@0@ABVMat@0@0@Z) référencé dans la fonction "class cv::Scalar_<double> __cdecl getMSSIM(class cv::Mat const &,class cv::Mat const &)" (?getMSSIM@@YA?AV?$Scalar_@N@cv@@ABVMat@2@0@Z)
    1>Test.obj : error LNK2019: symbole externe non résolu "class cv::MatExpr __cdecl cv::operator+(class cv::MatExpr const &,class cv::Scalar_<double> const &)" (??Hcv@@YA?AVMatExpr@0@ABV10@ABV?$Scalar_@N@0@@Z) référencé dans la fonction "class cv::Scalar_<double> __cdecl getMSSIM(class cv::Mat const &,class cv::Mat const &)" (?getMSSIM@@YA?AV?$Scalar_@N@cv@@ABVMat@2@0@Z)
    1>Test.obj : error LNK2019: symbole externe non résolu "class cv::MatExpr __cdecl cv::operator*(double,class cv::Mat const &)" (??Dcv@@YA?AVMatExpr@0@NABVMat@0@@Z) référencé dans la fonction "class cv::Scalar_<double> __cdecl getMSSIM(class cv::Mat const &,class cv::Mat const &)" (?getMSSIM@@YA?AV?$Scalar_@N@cv@@ABVMat@2@0@Z)
    1>Test.obj : error LNK2019: symbole externe non résolu "void __cdecl cv::GaussianBlur(class cv::_InputArray const &,class cv::_OutputArray const &,class cv::Size_<int>,double,double,int)" (?GaussianBlur@cv@@YAXABV_InputArray@1@ABV_OutputArray@1@V?$Size_@H@1@NNH@Z) référencé dans la fonction "class cv::Scalar_<double> __cdecl getMSSIM(class cv::Mat const &,class cv::Mat const &)" (?getMSSIM@@YA?AV?$Scalar_@N@cv@@ABVMat@2@0@Z)
    1>Test.obj : error LNK2019: symbole externe non résolu "public: void __thiscall cv::Mat::copySize(class cv::Mat const &)" (?copySize@Mat@cv@@QAEXABV12@@Z) référencé dans la fonction "public: __thiscall cv::Mat::Mat(class cv::Mat const &)" (??0Mat@cv@@QAE@ABV01@@Z)
    1>Test.obj : error LNK2019: symbole externe non résolu "void __cdecl cv::subtract(class cv::_InputArray const &,class cv::_InputArray const &,class cv::_OutputArray const &,class cv::_InputArray const &,int)" (?subtract@cv@@YAXABV_InputArray@1@0ABV_OutputArray@1@0H@Z) référencé dans la fonction "class cv::Mat & __cdecl cv::operator-=(class cv::Mat const &,class cv::Mat const &)" (??Zcv@@YAAAVMat@0@ABV10@0@Z)
    1>D:\Utilisateur\Documents\Visual Studio 2010\Projects\FirstStepOpenCV\Debug\FirstStepOpenCV.exe : fatal error LNK1120: 25 externes non résolus
    1>
    1>ÉCHEC de la build.
    1>
    Quelqu'un voit le problème?

    Merci d'avance.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Bonjour,

    Tu décris tes étapes d'installation en détail mais as tu pensé a compiler openCV avec Cmake??
    J'ai fais l'installation d'OpenCV2.4 mais pour Visual Studio 2008 et j'ai du compiler la bibliotheque pour ma solution avant de parametrer mon premier projet.

    Sinon, pour le répertoire opencv\build\x64\vc10\bin. as tu essayé avec x86 des fois que ce soit pas l'autre version?

    Enfin, pour ce qui est des .lib, tu dois les ajouter manuellement au linker (ex : opencv-highgui240.lib ... etc.)

    Voilà, j'espère que ma réponse n'était pas trop à côté de la plaque et que la procédure d'install est bien la même pour Visual 2008 et 2010.
    Bon courage.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    Citation Envoyé par arkeya Voir le message
    Bonjour,

    Tu décris tes étapes d'installation en détail mais as tu pensé a compiler openCV avec Cmake??
    J'ai fais l'installation d'OpenCV2.4 mais pour Visual Studio 2008 et j'ai du compiler la bibliotheque pour ma solution avant de parametrer mon premier projet.
    Comment on compile la bibliothèque? Il n'y avait pas cela dans le tuto, et je crois que le dossier Build saute cette étape. Je me trompe surement.


    Citation Envoyé par arkeya Voir le message
    Sinon, pour le répertoire opencv\build\x64\vc10\bin. as tu essayé avec x86 des fois que ce soit pas l'autre version?
    Je vais essayé de ce pas.

    Citation Envoyé par arkeya Voir le message
    Enfin, pour ce qui est des .lib, tu dois les ajouter manuellement au linker (ex : opencv-highgui240.lib ... etc.)
    Justement le problème c'est que je ne les vois pas dans la fenêtre "Dépendances Supplémentaires", donc je n'arrive pas à les ajouter.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    http://opencv.willowgarage.com/wiki/InstallGuide

    Tout est super bien expliqué ici. (c'est en anglais mais la version Fr doit être trouvable sur le net)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Configure using CMake
     
        In general you should:
     
            Create a temporary directory, which we denote as <cmake_binary_dir>, where you want to put the generated Makefiles, Visual Studio, Xcode or Eclipse etc. project files as well the object files and output binaries. You can do it using CMake GUI.
     
            If you use CMake GUI, execute "Configure" to do the initial configuration, then adjust any options, then press "Configure" again and then press "Generate"
    C'est Cmake qui te permet de compiler OpenCV. Tu as un certain nombre de case (en rouge) à coucher/décocher selon ce que tu veux faire avec ton application.

    Pour ce qui est des bibliothèques, je ne me souviens pas qu'il faille les "choisir" mais plutôt entrer leurs noms dans la barre "dependances supplémentaires".

    http://www.youtube.com/watch?feature...&v=TH2w4fB_y0w

    Je ne l'ai pas regardé en entier mais cette video devrait t'aider je pense.
    Bonne continuation

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    J'ai réussi. En fait je ne savais pas qu'il fallait écrire dans les dépendances supplémentaires, je croyais que ça s'affichait et qu'il fallait sélectionner. En tout cas ça marche mieux, il me reste juste un problème de dll introuvable, alors que le path est bon.

    J'ai trouvé ça aussi, où c'était un peu plus clair par rapport au contenu du dossier OpenCV et les libs pré-built.
    http://stackoverflow.com/questions/7...al-studio-2010

    Merci pour tout.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    Points : 30
    Points
    30
    Par défaut
    Mais de rien

    Sinon, tu as utilisé Cmake avec Visual 2010 ou pas finalement? Parce que si oui, normalement tu as du générer ta solution dans un fichier à part (fichier de sortie spécifié dans Cmake à la génération) et c'est ce fichier la/include/Debug et fichier/include/Release que tu dois spécifier dans ton PATH pour le lien des dll.

    Tiens moi au courant de ce problème de dll introuvables. Ca vient d'un petit détail d'initialisation à l'install d'OpenCV (l'histoire du bon PATH avec le fichier de sortie de Cmake) je pense.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    Points : 8
    Points
    8
    Par défaut
    En fait j'utilise tout ce qui est pre-built donc je n'ai pas besoin du CMake normalement car j'ai déjà les dll à cet endroit :\opencv\build\x86\vc9\bin. Je l'ai bien ajouté à la variable PATH. Après un reboot ça ne marche pas, il me dit que la xxx.dll est introuvable, alors qu'elle est bien présente à cet emplacement.

    Je vais essayé avec x64 ou avec vc10. Ne marche pas car visual créer des app 32 bits (lu sur un forum).

    J'ai réussi à faire marché en utilisant x86\vc10\{bin,lin}. La compilation n'a pas de problème, il trouve la dll mais maintenant j'ai plein de nouveau message d'erreur "Cannot find or open the PDB file".

    Edit: En fait cette erreur n'en est pas vraiment une je crois, c'est juste un warning. Tout marche parfaitement.

    Merci pour l'aide.

  8. #8
    Membre régulier
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2011
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 248
    Points : 74
    Points
    74
    Par défaut NB: ATTENTION A UTILISER LA BONNE PLATEFORME
    J'ai voulu installer OpenCV 2.4.0 avec Visual Studio 2010, sur mon PC 64 bits.

    J'ai eu la même erreur que toi:
    error LNK2019: symbole externe non résolu _cvWaitKey référencé dans la fonction _main

    En fait j'avais oublié de régler la configuration:

    - clic droit sur le nom du projet
    - gestionnaire de configuration
    - cocher x64 (si tu utilise 64 bits)

    => bien sûr, penser à faire tous les liens pour chaque mode (release et debug) :
    dans Propriétés de configurations => Répertoire VC++ => Répertoires d'exécutables => ajouter C:\opencv\build\x64\vc10\bin (vérifier l'adresse, moi j'ai installé OpenCV dans C
    dans Propriétés de configurations => Répertoire VC++ => Répertoires de bibliothèques => ajouter C:\opencv\build\x64\vc10\lib
    dans Propriétés de configurations => Répertoire VC++ => Répertoires Include => ajouter C:\opencv\build\include

    dans C/C++ => Général => Autre répertoire Include => C:\opencv\build\include
    dans Editeur de liens => Général => Répertoire de bibliotheques suplémentaires => C:\opencv\build\x64\vc10\lib
    dans Editeurs de liens => entrée => Dépendances supplémentaires => ajouter dans chaque mode (debug et release):
    - dans le mode debug:
    opencv_calib3d240d.lib
    opencv_contrib240d.lib
    opencv_core240d.lib
    opencv_features2d240d.lib
    opencv_flann240d.lib
    opencv_gpu240d.lib
    opencv_haartraining_engined.lib
    opencv_highgui240d.lib
    opencv_imgproc240d.lib
    opencv_legacy240d.lib
    opencv_ml240d.lib
    opencv_nonfree240d.lib
    opencv_objdetect240d.lib
    opencv_photo240d.lib
    opencv_stitching240d.lib
    opencv_ts240d.lib
    opencv_video240d.lib
    opencv_videostab240d.lib

    - dans le mode release:
    opencv_calib3d240.lib
    opencv_contrib240.lib
    opencv_core240.lib
    opencv_features2d240.lib
    opencv_flann240.lib
    opencv_gpu240.lib
    opencv_haartraining_engine.lib
    opencv_highgui240.lib
    opencv_imgproc240.lib
    opencv_legacy240.lib
    opencv_ml240.lib
    opencv_nonfree240.lib
    opencv_objdetect240.lib
    opencv_photo240.lib
    opencv_stitching240.lib
    opencv_ts240.lib
    opencv_video240.lib
    opencv_videostab240.lib

    Enfin, dernier petit truc, lors de la compilation, il se peut qu'il vous manque la dll : tbb_debug.dll,
    => il faut aller la chercher dans le disque C, ou je sais pas, lancez une recherche, ensuite dès que vous l''avez trouvée, vous la copiez et vous la mettez dans le debug de votre projet.
    Alors là encore, il y a un bordel monstre la dedans, j'ai jamais compris pourquoi il y avait 10 debug différents. Dans mon cas pour que ça marche il faut le mettre dans

    C:\Users\julien\Documents\Visual Studio 2010\Projects\OpenCV\x64\Debug

    Voilà j'ai mis toutes les dll là dedans, et ça marche !!




    Je vous donne un conseil, c'est de placer directement les dll dans le debug de votre projet (barbare mais efficace !! ).

    Enfin, il n'est pas nécessaire d'utiliser CMake, du moins pour débuter.

    Voilà je ne pouvais pas être + clair !!
    "Les ordinateurs font toujours ce qu'on leur dit, mais jamais ce qu'on veut."

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur LNK2019 avec dépendance lib static
    Par iliak dans le forum C
    Réponses: 0
    Dernier message: 10/03/2014, 20h05
  2. Erreur de lieur avec la librairie OpenCV
    Par pasqual dans le forum C++Builder
    Réponses: 5
    Dernier message: 23/09/2008, 22h28
  3. [cvBlobsLib]Probleme à l'execution avec des erreurs LNK2019
    Par Jim_Nastiq dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 01/03/2007, 14h40
  4. erreur LNK2019 avec propre header.
    Par FamiDoo dans le forum C++
    Réponses: 1
    Dernier message: 02/08/2006, 16h37
  5. erreur LNK2019 avec des fonctions communes.
    Par FamiDoo dans le forum Visual C++
    Réponses: 9
    Dernier message: 31/07/2006, 10h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo