| Autor |
Nachricht |
Lurnon
Mitglied
Benutzerprofil
Anmeldungsdatum: 21.05.2008
Beiträge: 41
|
Lurnon Mitglied
18:47:24 28.12.2008 Titel: |
[wxWidgets] [gelöst] neues Event endet in Fehler |
Zitieren |
Hallöle,
ich wollte ein Event für wxWidgets schreiben. Der Code sieht folgendermaßen aus (viel aus einem Tutorial übernommen):
Ereignisse.h
| C++: | 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 31 32 33 34 35 36 37 | #include <wx/wx.h>
DECLARE_EVENT_TYPE(MeinCommandEreignis,-1)
class MeinEreignis: wxCommandEvent
{
public:
MeinEreignis(wxEventType commandType = MeinCommandEreignis, int id = 0)
: wxCommandEvent(commandType, id){};
MeinEreignis(const MeinEreignis &event):wxCommandEvent(event)
{ this->Aendere_Wert(event.Zeige_Wert());};
;
virtual wxEvent* Clone() const { return new MeinEreignis(*this); }
unsigned char Zeige_Wert() const {return m_Wert;};
void Aendere_Wert(const unsigned char &u_Wert) {m_Wert=u_Wert;};
private:
unsigned char m_Wert;
};
typedef void (wxEvtHandler::*MeinEreignisFunction)(MeinEreignis &);
// This #define simplifies the one below, and makes the syntax less
// ugly if you want to use Connect() instead of an event table.
#define MeinEreignisHandler(func) \
(wxObjectEventFunction)(wxEventFunction)(wxCommandEventFunction)\
wxStaticCastEvent(MeinEreignisFunction, &func)
// Define the event table entry. Yes, it really *does* end in a comma.
#define EVT_MEINEREIGNIS(id, fn) \
DECLARE_EVENT_TABLE_ENTRY( MeinCommandEreignis, id, wxID_ANY, \
(wxObjectEventFunction)(wxEventFunction) \
(wxCommandEventFunction) wxStaticCastEvent( \
MeinEreignisFunction, &fn ), (wxObject*) NULL ), | |
die Ereignisse.cpp
| C++: | #include "Ereignisse.h"
DEFINE_EVENT_TYPE(MeinCommandEreignis) | |
Benutzt werden soll das Event in einer anderen Quellcodedatei (gleiches Projekt)
die Ereignisse.h ist per Include eingebunden
Will ich mein Event nun benutzen (über Eventtabelle der Fensterklasse)
kommt es zu folgendem Build-fehler:
| Zitat: | ||=== Editor, Release ===|
obj\Release\Elemente.o:Elemente.cpp:(.text+0xe737)||undefined reference to `__imp__MeinCommandEreignis'|
||=== Build finished: 1 errors, 0 warnings ===|
|
Achja, ich benutze Code::Blocks.
Kann mir jemand helfen?
Was muss ich anders machen und wieso?
Gruß,
Lurnon
edit: Lösung wxWidgets nicht als DLL sondern als Lib einbinden (also shared=0 beim build) |
Zuletzt bearbeitet von Lurnon am 11:21:13 10.01.2009, insgesamt 1-mal bearbeitet |
|
 |
scorcher24@arbyte
Unregistrierter
|
scorcher24@arbyte Unregistrierter
07:27:35 29.12.2008 Titel: |
|
Zitieren |
| Code: | | MeinEreignis(wxEventType commandType = MeinCommandEreignis, int id = 0) | |
Du erzeugt hier quasi einen Standard-Konstruktor, bzw dessen Signatur und der Linker sucht vergeblich nach dem selbigen, da es MeinEreignis() nicht gibt. Ist geraten, aber es scheint ein kleiner Bug zu sein, mit dem M$-Compiler funktionieren solche Konstrukte.
Probier das hier:
| Code: | MeinEreignis() : wxCommandEvent(MeinCommandEreignis, 0){};
MeinEreignis(wxEventType commandType, int id = 0)
: wxCommandEvent(commandType, id){}; | |
So sollte es gehen.
rya. |
|
|
|
 |
Lurnon
Mitglied
Benutzerprofil
Anmeldungsdatum: 21.05.2008
Beiträge: 41
|
Lurnon Mitglied
22:17:31 29.12.2008 Titel: |
|
Zitieren |
Leider hat das nichts gebracht, dennoch danke.
Hab jetzt aber festgestellt, wenn ich :
| C++: | | DEFINE_EVENT_TYPE(MeinCommandEreignis) | |
nicht in Ereignisse.cpp schreibe, sondern in meine "Haupt-"Quellcodedatei, in der ich mein Ereignis abfangen will, schreibe, kommt kein Fehler.
Doch bei Standardevents muss dieses MACRO ja auch nicht in die "Haupt-"Quellcodedatei, also muss das doch irgendwie mgl. sein, das in die Ereignisse.cpp zu bringen. Hat da jemand ne Idee?
Gruß
Lurnon |
Zuletzt bearbeitet von Lurnon am 22:18:41 29.12.2008, insgesamt 1-mal bearbeitet |
|
 |
Lurnon
Mitglied
Benutzerprofil
Anmeldungsdatum: 21.05.2008
Beiträge: 41
|
Lurnon Mitglied
19:48:37 30.12.2008 Titel: |
|
Zitieren |
Wieder was entdeckt, bekomme den gleichen Fehler wenn ich phlox81s Codebeispiel aus dem "wxWidgets Tutorial Part II: Spiel mit mir" kompilieren will. |
|
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|