C++/Irrlicht - unerwarteter Fehler

08/21/2010 01:17 .nAno#1
Heyho,
Ich beschäftige mich seit einiger Weile mit C++ und habe heute angefangen mich auch mit Irrlicht auseinander zusetzen und probiere mich atm. an dem Hello World Tutorial ([Only registered and activated users can see links. Click Here To Register...]).

Das Device erstellt er fehlerfrei, nur sobald mal probiert eine Funktion über eben jenes aufzurufen gibt es einen Fehler...
Das Projekt lässt sich ohne jegliche Warnung kompilieren und die Umgebung ist ebenfalls richtig eingerichtet.

Da ich aus diesem Fehler selber nicht schlau werde, hier mal mein bisheriger Source:
PHP Code:
#include <irrlicht.h>
#include <iostream>

using namespace irr;
    
    
using namespace core;
    
using namespace scene;
    
using namespace video;
    
using namespace io;
    
using namespace gui;

#ifdef _IRR_WINDOWS_
    #pragma comment(lib, "Irrlicht.lib")
#endif

int main()
{
    
IrrlichtDevice *device createDevicevideo::EDT_SOFTWAREdimension2d<u32>(640480));

        if (!
device)
        {
            
std::cout << "ERROR creating a new Device!";
            return 
1;
        }
        else
        {
            
std::cout << "New Device created succesfully.";
        }

    
int fullscreen device->isFullscreen(); //einfacher Test, ob der Fehler beim Device oder bei setWindowCaption() liegt, andere Funktionen gehen ebenfalls nicht

    
std::cout << fullscreen;
    
device->setWindowCaption(L"Hello World! - Irrlicht");

    
std::cin.get();
    return 
0;

EDIT: auch einfach gepastedet Code funktioniert nicht

Ich hoffe wer kann mir da weiterhelfen ;)
08/21/2010 01:31 Shadow992#2
Quote:
Originally Posted by .nAno View Post
Heyho,
Ich beschäftige mich seit einiger Weile mit C++ und habe heute angefangen mich auch mit Irrlicht auseinander zusetzen und probiere mich atm. an dem Hello World Tutorial ([Only registered and activated users can see links. Click Here To Register...]).

Das Device erstellt er fehlerfrei, nur sobald mal probiert eine Funktion über eben jenes aufzurufen gibt es einen Fehler...
Das Projekt lässt sich ohne jegliche Warnung kompilieren und die Umgebung ist ebenfalls richtig eingerichtet.

Da ich aus diesem Fehler selber nicht schlau werde, hier mal mein bisheriger Source:
PHP Code:
#include <irrlicht.h>
#include <iostream>

using namespace irr;
    
    
using namespace core;
    
using namespace scene;
    
using namespace video;
    
using namespace io;
    
using namespace gui;

#ifdef _IRR_WINDOWS_
    #pragma comment(lib, "Irrlicht.lib")
#endif

int main()
{
    
IrrlichtDevice *device createDevicevideo::EDT_SOFTWAREdimension2d<u32>(640480));

        if (!
device)
        {
            
std::cout << "ERROR creating a new Device!";
            return 
1;
        }
        else
        {
            
std::cout << "New Device created succesfully.";
        }

    
int fullscreen device->isFullscreen(); //einfacher Test, ob der Fehler beim Device oder bei setWindowCaption() liegt, andere Funktionen gehen ebenfalls nicht

    
std::cout << fullscreen;
    
device->setWindowCaption(L"Hello World! - Irrlicht");

    
std::cin.get();
    return 
0;

EDIT: auch einfach gepastedet Code funktioniert nicht

Ich hoffe wer kann mir da weiterhelfen ;)
Ist die Dll auch im selben Verzeichniss wie die .exe bzw. das Skript?
08/21/2010 02:09 .nAno#3
jo, wie gesagt, die Umgebung ist richtig eingerichtet.
Außerdem wird das Device erfolgreich erstellt, Funktionen der Klasse können allerdings nicht aufgerufen werden
08/21/2010 03:02 Shadow992#4
Quote:
Originally Posted by .nAno View Post
jo, wie gesagt, die Umgebung ist richtig eingerichtet.
Außerdem wird das Device erfolgreich erstellt, Funktionen der Klasse können allerdings nicht aufgerufen werden
Das schaut mir aber schwer danach aus, als würde die Dll fehlen.
Compilier das Skript mal und zieh die .exe + die Irrlicht.dll in ein Verzeichniss und starte dann mal die Exe.
Es kann im Grunde an nichts anderem liegen, eventuel ist der Compiler Schrott (ist aber unwahrscheinlich).

Edit:
Wenn es daran nicht liegt, hol dir mal den GCC Compiler (falls du ihn nicht schon hast).
Ansonsten kann ich dir auch mal eine andere IDE anbieten (z.b. Code::Block), sollte eigentlich nichts verändern, aber sicher ist sicher. ;)
08/21/2010 03:58 .nAno#5
Ich hatte ursprünglich vergessen, die DLL in den Ordner zu kopieren, es gab ne explizite Fehlermeldung. Compiler und IDE sind bisher VC++, ich werds aber mal probieren.
Könnte es sonst auch an Kompatibilitätsproblemen liegen? OS ist Windows 7 64-bit, werd mal das Programm auf meinen XP Labtop laden und sehen, was passiert ;)
08/21/2010 04:24 P-a-i-n#6
in der 64 bit version wird nicht alles benutzbar sein was in der 32 bit geht da fehlts noch an einigem hatte das problem auch :) allerdings vor monaten vllt ist es gefixt
08/21/2010 13:45 Madd Eye#7
So wie ich das verstanden habe willst du deine Anwendung im Vollbildmodus starte, oder?

dann Tausch die Zeile:
Code:
IrrlichtDevice *device = createDevice( video::EDT_SOFTWARE, dimension2d<u32>(640, 480));
mal mit
Code:
IrrlichtDevice *device = createDevice( video::EDT_SOFTWARE, dimension2d<u32>(640, 480), 16, true);
aus. das True als letzter parameter gibt an ob es im Vollbild oder im Fenster Modus gestartet wird
08/21/2010 15:17 xNopex#8
Quote:
Code:
int fullscreen = device->isFullscreen();
Ihh...

Code:
virtual bool irr::IrrlichtDevice::isFullscreen() const [pure virtual]
-->

Code:
if( device->isFullscreen() )
    std::cout << "Yeah, Fullscreen";
else
    std::cout << "Yeah, Kein Fullscreen";
08/21/2010 16:21 Tyrar#9
hast du den irrlicht source NEU KOMPILIERT? (für 64 bit)

wenn nicht verwendest du höchst wahrscheinlich die 32 bit version und das ist dann auch der fehler
08/21/2010 17:21 P-a-i-n#10
sollte er auch machen wenn du dir irrlicht - 1.6 geladen hast und in den ordner unter Bin gehst und auf Win64-VisualStudio klickst findest du dieses nette dokument

Quote:
Sorry, I cannot provide procompiled binaries for Win64.
Please goto the \source directory, unzip the source.zip file
and compile them yourself, it will cost you about 3 minutes. :)
08/21/2010 19:32 .nAno#11
Also, ich hab das Problem bereits entdeckt, Shadow und P-a-i-n hatten beide recht ;)
Der Fehler hängt unteranderem mit VC++ zusammen bzw. mit .NET, wenn ich gcc oder mingw verwende klappt alles super (sowohl meiner als auch der offizielle Source lassen sich kompilieren und sind ausführbar :))

Außerdem gab's nen Fehler mit meinem 64-bit OS, danke an beide