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

SL & STL C++ Discussion :

[LNK]erreurs avec std::tr1::regex


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2004
    Messages : 126
    Par défaut [LNK]erreurs avec std::tr1::regex
    Bonjour à tous!

    Bon, j'espère ne pas me tromper de section en postant ça ici...

    Dans un projet développé avec VS2008; j'ai besoin d'utiliser dans une fonction les expressions régulières. Ma fonction ressemble à ceci (elle n'est pas très propre pour le moment mais là n'est pas la question ) :

    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
     
    #include <regex>
     
    [...]
     
    CTime CTime(string sTime)
    {
        std::tr1::match_results<string::const_iterator> sResult;
     
        const std::tr1::regex pattern("^([0-9]{4})-?([0-9]{1,2})-?([0-9]{1,2})T([0-9]{1,2}):?([0-9]{1,2}):?([0-9]{1,2})[\\.,\\,]?([0-9]*)(Z|([-,+])([0-9]{1,2}):?([0-9]{1,2}))$");
     
        bool match = std::tr1::regex_match(sTime, sResult, pattern);
     
        if (match)
        {        
            CTime ctTime(
                To_int(sResult[1]),
                To_int(sResult[2]),
                To_int(sResult[3]),
                To_int(sResult[4]),
                To_int(sResult[5]),
                To_int(sResult[6]),
                -1);
            return ctTime;
        }
     
        CTime ctTime (0);
        return ctTime;
    }
    Bref, le problème est qu'à la compilation, j'ai les erreurs suivantes :

    Error 1 error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl std::tr1::_Xbad(enum std::tr1::regex_constants::error_type)" (__imp_?_Xbad@tr1@std@@YAXW4error_type@regex_constants@12@@Z) referenced in function "public: static unsigned int __cdecl std::tr1::_Regex_traits<char>::length(char const *)" (?length@?$_Regex_traits@D@tr1@std@@SAIPBD@Z) gpx_parser.obj Vts Acquisition

    Error 2 error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl std::tr1::_Xmem(void)" (__imp_?_Xmem@tr1@std@@YAXXZ) referenced in function "private: void __thiscall std::tr1::_Buf<char>::_Expand(int)" (?_Expand@?$_Buf@D@tr1@std@@AAEXH@Z) gpx_parser.obj Vts Acquisition

    Error 3 fatal error LNK1120: 2 unresolved externals ..\..\bin\debug/Acquisitiond.dll Vts Acquisition
    J'avoue être un peu perdu... Si quelqu'un a une idée...

  2. #2
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Bonjour,

    Les regex sont une des rares parties de Boost à devoir être compilées, tu dois lier avec un .lib (d'où les erreurs que tu rencontres).

    C'est pourquoi il tu dois compiler Boost (entièrement, il y a d'autres parties qui sont aussi intéressantes), puis lier avec lui.

    Sur le site de BoostProComputing tu trouveras Boost 1.38 compilé pour Visual Studio (plus d'infos sur le sujet : http://arb.developpez.com/c++/boost/install/vc++/). Si tu as besoin de la 1.39, tu peux la compiler toi-même (pour plus d'infos : http://ram-0000.developpez.com/tutor...pp/boost-regex).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2004
    Messages : 126
    Par défaut
    J'avais compris qu'en utilisant ça (std::tr1) je n'utilisais pas Boost. Non?

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Personnellement, je ne connais pas de librairie standard qui intègre le support des expressions régulières (mais je ne passe pas tous les jours pour le vérifier, vu que Qt les supporte...) pour le moment, j'ai donc pensé que tu utilisais Boost...
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Mars 2004
    Messages : 126
    Par défaut
    J'ai essayé ce que tu m'as conseillé mais ça n'a rien changé. Je ne pense pas qu'il y ait de lien avec Boost mais d'après ce que j'ai cru comprendre, TR1 est pour le moment la seule solution pour faire des regex avec la STL.

    Je vais p-e voir aussi du côté de Boost.

    Peut-être une autre idée?

  6. #6
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    Citation Envoyé par dourouc05 Voir le message
    Personnellement, je ne connais pas de librairie standard qui intègre le support des expressions régulières (mais je ne passe pas tous les jours pour le vérifier, vu que Qt les supporte...) pour le moment, j'ai donc pensé que tu utilisais Boost...
    Sisi le TR1 intégre les regex. Et bien sur c'est basé sur ceux de boost. Pour les erreurs de linker, n'utilisant pas VS je peux pas trop t'aider.

  7. #7
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2008
    Messages
    26 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 772
    Par défaut
    Après une petite recherche, j'ai trouvé que le TR1 était inclus dans le Feature Pack de VS2008. Cependant, il n'est pas censé compatible avec les versions non anglaises de VS, ni avec le SP1... Peut-être est-ce que ça vient de là ? (Ça m'étonnerait, mais on ne sait jamais...). Il est de toute façon inclus dans VS2010.

    Donc, as-tu installé le FP ? Lies-tu bien avec lui ? (Ne l'ayant jamais utilisé, je ne m'aventurerai pas plus loin).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

Discussions similaires

  1. Erreur avec std::thread (C++11)
    Par gbdivers dans le forum Qt Creator
    Réponses: 0
    Dernier message: 14/08/2012, 11h09
  2. erreur avec regex ou listview
    Par cleecky dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/06/2011, 14h51
  3. Erreur avec Typedef et std
    Par leCcsympas dans le forum SL & STL
    Réponses: 2
    Dernier message: 16/04/2007, 20h43
  4. Erreur avec les ADO
    Par megane dans le forum Bases de données
    Réponses: 7
    Dernier message: 08/03/2004, 21h37
  5. Erreur avec WM_COMMAND (BN_CLICKED)
    Par cyberlewis dans le forum Windows
    Réponses: 2
    Dernier message: 09/02/2004, 00h25

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