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
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    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
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    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
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    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
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    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
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    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
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2011
    Messages
    33
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2011
    Messages : 33
    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
    Membre averti
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    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 tr�s actif
    Homme Profil pro
    Ing�nieur int�gration
    Inscrit en
    Juin 2011
    Messages
    260
    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 : 260
    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 !!

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. 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