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...