Membres inscrits :598
Membres en ligne : 0
Invités en ligne : 2


|
| Conversation (Résolue) : Problème de linkage |
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 59
Snippets: 0
Tutoriels: 0
Hors ligne |
Bonjour,
Tout d'abord, bravo pour ce site, il est très ben fait et il m'a été bien utile.
J'ai un problème au moment du link d'un petit projet en wxWidget.
J'ai l'erreur suivante :
linker a écrit:||=== YAPE_Music, Release == obj\Release\windowsComposition.o:windowsComposition.cpp:(.rdata$_ZTV14winComposition[vtable for winComposition]+0x2c)||undefined reference to `winComposition::GetEventTable() const'| obj\Release\windowsComposition.o:windowsComposition.cpp:(.rdata$_ZTV14winComposition[vtable for winComposition]+0x30)||undefined reference to `winComposition::GetEventHashTable() const'| ||=== Build finished: 2 errors, 0 warnings == Je comprends qu'il s'agit d'une méthode qu'il ne trouve pas. J'ai beau chercher, je ne trouve pas.
Voici les sources :
main.cpp :
Code wxWidgets:#include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif #ifndef WX_PRECOMP #include "wx/wx.h" #include "wx/mdi.h" #endif #include "main.h" #include "windowsComposition.h" IMPLEMENT_APP(mainApp); MainFrame *frame = (MainFrame *) NULL; BEGIN_EVENT_TABLE(MainFrame, wxMDIParentFrame) EVT_MENU(1, MainFrame::OnNewWindow) END_EVENT_TABLE() MainFrame::MainFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long style) : wxMDIParentFrame(parent, id, title, pos, size, style) { } void MainFrame::OnNewWindow(wxCommandEvent& WXUNUSED(event) ) { winComposition *subframe = new winComposition(frame, _T("Canvas Frame")); } bool mainApp::OnInit() { frame = new MainFrame((wxFrame *)NULL, wxID_ANY, _T("YAPE Music"), wxDefaultPosition, wxSize(500, 400), wxDEFAULT_FRAME_STYLE | wxHSCROLL | wxVSCROLL); wxMenu *file_menu = new wxMenu; file_menu->Append(1, _T("&New window\tCtrl-N"), _T("Create a new child window")); wxMenuBar *menu_bar = new wxMenuBar; menu_bar->Append(file_menu, _T("&File")); frame->SetMenuBar(menu_bar); frame->Show(); return true; }
main.h
Code wxWidgets: class MainFrame : public wxMDIParentFrame { public: MainFrame(wxWindow *parent, const wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, const long style); void OnNewWindow(wxCommandEvent& event); DECLARE_EVENT_TABLE() }; class mainApp : public wxApp { public: virtual bool OnInit(); }; DECLARE_APP(mainApp);
windowsComposition.cpp
Code wxWidgets:#include "windowsComposition.h" winComposition::winComposition(wxMDIParentFrame *parent, const wxString& title) : wxMDIChildFrame(parent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE | wxNO_FULL_REPAINT_ON_RESIZE) { SetSizeHints(100, 100); } winComposition::~winComposition() { }
windowsComposition.h
Code wxWidgets:#include <wx/wx.h> class winComposition : public wxMDIChildFrame { public: winComposition (wxMDIParentFrame *parent, const wxString& title); ~winComposition(); DECLARE_EVENT_TABLE() };
merci d'avance.
Dernière modification par Xaviou (03-06-2010 17:25:32)
| |
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1147
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Salut.
L'erreur que tu obtiens vient du fait que tu déclares une table d'événements pour ta classe winComposition, mais tu ne la définis jamais. À aucun moment on ne trouve de code ressemblant à :
Code wxWidgets:
A partir du moment où tu mets la macro DECLARE_EVENT_TABLE() dans la déclaration de la classe, il faut obligatoirement mettre le code ci-dessus dans le fichier cpp, même si tu ne mets rien entre les deux macros BEGIN_EVENT_TABLE et END_EVENT_TABLE
Normalement, ça devrait résoudre ton problème
@+ Xav'
P.S: N'hésites pas à utiliser la balise code quand tu postes des morceaux de code, c'est plus lisible
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 59
Snippets: 0
Tutoriels: 0
Hors ligne |
Merci à toi !!! Génial ça marche !!!!
Encore un grand MERCI !!!!
| |
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1147
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
N'oublie pas de marquer la discussion comme résolue en cliquant sur l'icône verte à droite de la réponse 
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1147
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
J'ai oublié de préciser : pour passer une discussion en mode résolu, il faut cliquer sur l'icône en vert se trouvant au niveau de la (ou des) réponse(s) ayant aidé à résoudre le problème, pas au niveau de la question (sauf si la réponse s'y trouve, bien entendu ). J'ai fait la correction.
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
|