Problem (evtl. bzgl. Vererbung? bin mir nicht sicher)



  • Hallo miteinander,

    folgendes Szenario:

    In einer Grafik-Bibliothek gibt es eine Klasse Root, eine Klasse RenderWindow und eine Klasse JavaAWTWindow, die von RenderWindow erbt.

    Weiterhin gibt es die Funktionen:

    RenderWindow* Root::initialize();
    void JavaAWTWindow::testPrint() const;  //<-- testPrint() ist also nicht in RenderWindow enthalten.
    

    In meiner eigenen Bibliothek möchte ich nun ein JavaAWTWindow Objekt erstellen und die Funktion JavaAWTWindow::testPrint() aufrufen. Dabei tritt aber offensichtlich beim Laden meiner Bibliothek eine Exception auf (Was genau schief geht, weiss ich nicht, da ich meine eigene Bibliothek aus Java heraus mit dem JNI aufrufe). Innerhalb der Grafikbibliothek wird in jedem Fall ein JavaAWTWindow erzeugt und bei initialise ein RenderWindow zurück gegeben.

    Weiss jemand wo da der/die Fehler liegen könnten?

    Folgender Code kompiliert Fehlerfrei, führt dann aber zu der Exception:

    JavaAWTWindow.h:

    class JavaAWTWindow : public RenderWindow {
    public:
        void testPrint(void) const;
    };
    

    JavaAWTWindow.cpp:

    void JavaAWTWindow::testPrint() const {
    
    }
    

    Code für den Aufruf von JavaAWTWindow::testPrint():

    JavaAWTWindow* renderWindow;
    renderWindow = (JavaAWTWindow*)(root->initialise());
    renderWindow->testPrint();
    //renderWindow->destroy(); <-- funktioniert ohne Probleme
    

    Ist da evtl der cast falsch? Wahrscheinlich ist das ganze wieder ein total dämlicher Fehler den ich einfach nicht sehe 😞

    Gruß, Schmelly, der etwas ratlos ist

    Nachtrag:

    die Exception, die ich bekomme, ist folgende (leider recht nichtssagend):

    FATAL ERROR in native method: JNI call made with exception pending
    	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
    	- locked <0x65900370> (a java.util.Vector)
    	- locked <0x6591ce88> (a java.util.Vector)
    	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676)
    	at java.lang.Runtime.loadLibrary0(Runtime.java:822)
    	- locked <0x65911d30> (a java.lang.Runtime)
    	at java.lang.System.loadLibrary(System.java:992)
    	at org.ogretest.Main.<clinit>(Main.java:13)
    


  • ein blöder Link-Error war Schuld...


Anmelden zum Antworten