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 :
J'explique :
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)
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 :
Qu'ai-je oublié dans ces foutus links ? Je capte rien ! Merci !
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; }
Partager