Aktuelle Zeit: 13.05.2025, 18:03

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 06.12.2008, 13:24 
Offline

Registriert: 06.12.2008, 12:34
Beiträge: 4
Hallo,

ich habe Probleme den Irrlicht Event Receiver zu implementieren. Folgendes habe ich versucht:

Code:

class MyEventReceiver : public IEventReceiver
{
public:
        virtual bool OnEvent(const SEvent& event)
        {
                if (event.EventType == irr::EET_KEY_INPUT_EVENT)
                        KeyIsDown[event.KeyInput.Key] = event.KeyInput.PressedDown;

                return false;
        }

        virtual bool IsKeyDown(EKEY_CODE keyCode) const
        {
                return KeyIsDown[keyCode];
        }

        MyEventReceiver()
        {
                for (u32 i=0; i<KEY_KEY_CODES_COUNT; ++i)
                        KeyIsDown[i] = false;
        }

private:
        bool KeyIsDown[KEY_KEY_CODES_COUNT];
};

[...]

//In der main
MyEventReceiver receiver;
device = createDevice( video::EDT_OPENGL, dimension2d<s32>(800, 600), 16, false, false, false,&receiver);


Sobald ich den receiver als Parameter der createDevice Funktion übergebe, erhalte ich folgenden Fehler:
Code:
Unhandled exception at 0x00537506 in demo.exe: 0xC0000005: Access violation reading location 0xccccccd0.


Der Fehler tritt an der folgenden Stelle auf:
Code:
while(device->run())


Die Irrlicht.lib und Include Dateien sind alle vorhanden und richtig eingebunden. Wenn ich den receiver rausnehme und mit 0 ersetzte funktioniert alles.

IDE: VS 2008 Express
System: Win XP SP2 (Bootcamp)
Hardware: Macbook

Ich wäre euch für einen hilfreichen Tipp sehr dankbar, da ich jetzt schon viel danach gesucht habe und den Fehler einfach nicht finde.

Danke!


Nach oben
 Profil  
 
BeitragVerfasst: 06.12.2008, 14:41 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Kannst du mit dem Debugger noch weiter durch den Callstack gehen?

Weil device::run() ruft auch noch so einige funktionen auf.
Außer device ist ungültig, was ich mir aber nicht vorstellen kann, da du ja sagst ohne den EventReceiver gehts.

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
BeitragVerfasst: 06.12.2008, 15:38 
Offline

Registriert: 06.12.2008, 12:34
Beiträge: 4
Hallo Sylence,

vielen Dank für deine schnelle Antwort.

Hier der ganze Stack:
Code:
   Irrlicht.dll!00537506()    
   [Frames below may be incorrect and/or missing, no symbols loaded for Irrlicht.dll]   
   Irrlicht.dll!00537c7d()    
   kernel32.dll!7c80262a()    
   kernel32.dll!7c802600()    
   user32.dll!7e418734()    
   user32.dll!7e418bd9()    
   user32.dll!7e41885a()    
   user32.dll!7e42a013()    
   user32.dll!7e418734()    
   user32.dll!7e418816()    
   user32.dll!7e42a013()    
   user32.dll!7e42a039()    
   opengl32.dll!5ed2699b()    
   user32.dll!7e42b372()    
   user32.dll!7e418734()    
   user32.dll!7e418816()    
   user32.dll!7e4189cd()    
   user32.dll!7e42a340()    
   user32.dll!7e42a43b()    
   user32.dll!7e4196c7()    
   Irrlicht.dll!005386dd()    
>   demo.exe!KimeController::init()  Line 80 + 0x14 bytes   C++
   demo.exe!main()  Line 13   C++
   demo.exe!__tmainCRTStartup()  Line 586 + 0x19 bytes   C
   demo.exe!mainCRTStartup()  Line 403   C
   kernel32.dll!7c817067()    


Nach oben
 Profil  
 
BeitragVerfasst: 06.12.2008, 16:41 
Offline

Registriert: 06.12.2008, 12:34
Beiträge: 4
Gerade ist mir aufgefallen, dass die Exception erst geworfen wird, sobald sich die Maus bewegt. Wenn ich überhaupt nichts mache, dann läuft es. :shock:

Deshalb habe ich einmal versucht die Receiver zu minimieren auf:
Code:
class MyEventReceiver : public IEventReceiver
{
public:
        // This is the one method that we have to implement
        virtual bool OnEvent(const SEvent& event)
        {
                return false;
        }
};


Leider bekomme ich auch damit den Fehler :?

Was könnte ich noch versuchen um herauszufinden, was genau das Problem ist?

Danke!


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 11 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de