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

wxWidgets Discussion :

Erreurs de link wxWidgets et VC++ 2005


Sujet :

wxWidgets

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Points : 120
    Points
    120
    Par défaut Erreurs de link wxWidgets et VC++ 2005
    BOnjour,

    Apres la consultation de multiples forums sur les erreurs de link des wxWidget sous VC++ 2005, j'ai toujours le même problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CMainFrame.obj : error LNK2001: symbole externe non résolu "wchar_t const * const wxStatusLineNameStr" (?wxStatusLineNameStr@@3PB_WB)
    CMainFrame.obj : error LNK2001: symbole externe non résolu "wchar_t const * const wxFrameNameStr" (?wxFrameNameStr@@3PB_WB)
    CMainFrame.obj : error LNK2019: symbole externe non résolu "protected: void __thiscall wxStringBase::InitWith(wchar_t const *,unsigned int,unsigned int)" (?InitWith@wxStringBase@@IAEXPB_WII@Z) référencé dans la fonction "public: __thiscall wxStringBase::wxStringBase(wchar_t const *)" (??0wxStringBase@@QAE@PB_W@Z)
    TApplication.obj : error LNK2001: symbole externe non résolu "protected: void __thiscall wxStringBase::InitWith(wchar_t const *,unsigned int,unsigned int)" (?InitWith@wxStringBase@@IAEXPB_WII@Z)
    CMainFrame.obj : error LNK2019: symbole externe non résolu "void __cdecl wxAssert(int,wchar_t const *,int,wchar_t const *,wchar_t const *)" (?wxAssert@@YAXHPB_WH00@Z) référencé dans la fonction "public: __thiscall wxStringBase::wxStringBase(class wxStringBase const &)" (??0wxStringBase@@QAE@ABV0@@Z)
    CMainFrame.obj : error LNK2001: symbole externe non résolu "wchar_t const * const wxEmptyString" (?wxEmptyString@@3PB_WB)
    CMainFrame.obj : error LNK2019: symbole externe non résolu "public: int __cdecl wxString::Printf(wchar_t const *,...)" (?Printf@wxString@@QAAHPB_WZZ) référencé dans la fonction "public: void __thiscall CMainFrame::OnAbout(class wxCommandEvent &)" (?OnAbout@CMainFrame@@QAEXAAVwxCommandEvent@@@Z)
    Krablenet.obj : error LNK2001: symbole externe non résolu "public: virtual bool __thiscall wxApp::Initialize(int &,wchar_t * *)" (?Initialize@wxApp@@UAE_NAAHPAPA_W@Z)
    Krablenet.obj : error LNK2001: symbole externe non résolu "public: virtual void __thiscall wxAppConsole::OnAssert(wchar_t const *,int,wchar_t const *,wchar_t const *)" (?OnAssert@wxAppConsole@@UAEXPB_WH00@Z)
    J'explique :
    1) j'ai installé et compilé les wxWidgets pour Visual C++. J'ai donc toutes les librairies adéquates dans %WXDIR%/lib/vc_lib.

    2) J'ai compilé le projet de base dans samples/minimal apres quelques difficultés, mais ca fonctionne, en release ou en debug.

    3) Je désire désormais partir d'un projet a moi sans IHM et ajouter simplement l'effet de "Minimal" dans ce projet, c a dire avoir une fenetre qui s'ouvre avec les wxWidgets !!

    4) Je m'inspire donc des settings du projet minimal, pour mon projet en DEBUG pour le moment :

    Proprietes du projet / Editeurs de liens :
    (NB : je ne parle pas des options C/C++, comme les repertoires d'include, car ca compile tres bien, c'est juste que ca ne link pas).
    Général :
    Répertoires de bibliothèques supplémentaires : $(WXDIR)\lib\vc_lib

    Entrée :
    Dépendances supplémentaires : wxmsw26d_core.lib wxbase26d.lib comctl32.lib rpcrt4.lib wsock32.lib shell32.lib advapi32.lib ole32.lib oleaut32.lib kernel32.lib user32.lib gdi32.lib comdlg32.lib $(NOINHERIT)

    Je n'ai rien touché d'autre. Lorsque j'oubliais les fichiers liés au Platform SDK, comme comctl32.lib, rpcrt4.lib ou wsock32.lib, j'avais 700 erreurs de links dans les objets des librairies wxwidgets !! Je n'ai donc plus ces erreurs, plus que 10, mais cette fois liées aux objets dans mon projet (CmAinFrame, TApplication, et Krablenet sont dans mon projet, et j'ai des erreurs avec alors que dans minimal ces objets nétaient pas présents et je n'avais pas d'erreur).

    5) Voici un explemple d'utilisation des wxWidgets dans mon projet :
    TApplication.cpp :
    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
     
    bool TApplication::OnInit()
    {
        // create the main application window
        CMainFrame *loc_po_main_frame = new CMainFrame(_T("Minimal wxWidgets App"));
     
        // and show it (the frames, unlike simple controls, are not shown when
        // created initially)
        loc_po_main_frame->Show(true);
     
        // success: wxApp::OnRun() will be called which will enter the main message
        // loop and the application will run. If we returned false here, the
        // application would exit immediately.
        return true;
    }
    Qu'ai-je oublié dans ces foutus links ? Je capte rien ! Merci !

  2. #2
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Points : 120
    Points
    120
    Par défaut
    Une petite analyse supplémentaire :

    Si je mets tous les librairies de wxWidgets, ca ne change rien, j'ai toujours les 10 erreurs :
    wxtiffd.lib
    wxjpegd.lib
    wxpngd.lib
    wxzlibd.lib
    wxregexd.lib
    wxexpatd.lib
    Normal, mon morceau de code n'utilise pas ces lib.

    Le fait que le projet minimal compile résulte bien du fait que dans la solution (minimal.sln) les projets base (produisant ..\..\lib\vc_lib\wxbase26d.lib) et core ( produisant ..\..\lib\vc_lib\wxmsw26d_core.lib) sont inclus et recompilé dans le chaine de compilation de minimal (Click droit sur Minimal -> Dépendances du projet), donc minimal n'a meme pas besoin d'inclure les lib wx... dans son editeurs de lien, ca marche quand meme.

    Mais moi, dans mon projet, j'ai besoin d'inclure les fichiers les lib recompilées dans minimal.sln, a savoir :
    wxbase26d.lib
    et wxmsw26d_core

    Ce que je fais bien evidemment, comme vous avez pu le voir. Alors, qu'ais-je oublié ? Merci d'avance, je n'en peux plus !

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    717
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 717
    Points : 858
    Points
    858
    Par défaut
    Le problème est que l'appli est compilée en Unicode mais pas wxWidgets.
    Remplacer "wxmsw26d_core.lib wxbase26d.lib" par "wxmsw26ud_core.lib wxbase26ud.lib" devrait résoudre le problème.

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par Sylvain Togni
    Le problème est que l'appli est compilée en Unicode mais pas wxWidgets.
    Remplacer "wxmsw26d_core.lib wxbase26d.lib" par "wxmsw26ud_core.lib wxbase26ud.lib" devrait résoudre le problème.
    Bonsoir,

    je ne comprends absolument pas ce dont tu me parles !
    J'ai bien essayé ta manip, c'est a dire renommer ces lib dans mes settings de visula avec un U pour "unicode", mais elles ne sont pas présentes dans mon repertoire $(WXDIR)\lib\vc_lib. Les renommer physiquement (changer le nom du fichier) ne change rien non plus. D'ou ces quelques questions :

    Quest ce que ca veut dire "l'appli est compilée en unicode" ? Ne vaudrait il pas mieux, plutot que de rajouter des U aux noms des librairies, s'arranger pour compiler mon appli et wxwidget dans le meme standard ? Dans ce cas comment faire pour compiler mon appli comme j'ai compilé wxwidget ?

  5. #5
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Points : 120
    Points
    120
    Par défaut
    Rebonjour,

    C'est bon j'ai bien compris ce dont il s'agissait. J'explique pour ceux que cela pourrait intéresser, car plein de mec dans pleins de forums mettent pas les réponses quand finalement ils arrivent à la bonne solution, ils mettent simplement le "Résolu", et donc ca m'énerve !!

    Mon projet était donc compilé en unicode (Options générales du projet), et le dsp des wxwidgets permettait de choisir les targets de compilation Release Unicode et Debug Unicode, ce que j'ai fais. Ca m'a généré les librairies adéquates, celles avec des U ( "wxmsw26ud_core.lib wxbase26ud.lib" ). J'ai changé les settings de mon projets pour inclure ces lib, plutot que les autres, et tout fonctionne a merveille ! J'ai un projet en unicode qui compile !

    Alors Sylvain merci bcp !!
    J'avais juste zappé qu'il existait ces targets de compil dans le dsp des wxwidegts !

    A bientot.
    Alexandre.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 266
    Points : 161
    Points
    161
    Par défaut
    et si on veut compiler en WxWidgets et non en Unicode, on fait comment ?

  7. #7
    Membre régulier
    Inscrit en
    Septembre 2002
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 200
    Points : 120
    Points
    120
    Par défaut
    Citation Envoyé par frizou11
    et si on veut compiler en WxWidgets et non en Unicode, on fait comment ?
    Eh bien tu choisis les targets de compilation Release ou Debug selon simplement ce que tu veux compiler, si tu veux compiler les wxwidgets en lib statique.

    Pas besoin d'utiliser les targets Unicode Debug ou Unicode Release comme moi j'ai dû le faire pour mon programme !


    A plus.

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Points : 361
    Points
    361
    Par défaut
    Citation Envoyé par frizou11
    et si on veut compiler en WxWidgets et non en Unicode, on fait comment ?
    dans ton explorateur de solutions tu fais clic droit sur le projet -> propriétés -> Propriéts de configurations -> général -> dans la fenetre de droite tu as jeu de caractères et là tu met "Non défini"...

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

Discussions similaires

  1. Erreur link LNK2019 suite à migration 2005 --> 2008
    Par tapiou dans le forum Visual C++
    Réponses: 3
    Dernier message: 19/03/2012, 16h29
  2. erreur de link au passage de visual studio 2005 vers 2008
    Par blueLight dans le forum Visual C++
    Réponses: 2
    Dernier message: 21/04/2008, 15h02
  3. Erreurs de links sous Visual C++ 2005 Express
    Par Spartan03 dans le forum wxWidgets
    Réponses: 6
    Dernier message: 13/11/2006, 18h27
  4. Réponses: 1
    Dernier message: 02/11/2006, 20h09
  5. erreur de link sous wxWidgets avec Mingw
    Par pyoda dans le forum wxWidgets
    Réponses: 4
    Dernier message: 28/04/2006, 19h03

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