• Ich versuche gerade in Java auf eine DLL zuzugreifen, die wiederum auf eine fertige DLL zugreift.
    Dazu habe ich die üblichen Schritte getan: Java-Klasse mit nativen Methoden schreiben, kompilieren, JNI-Headerdatei erstellen, DLL mit VC++ 2005 erstellen. Alles ließ sich fein kompilieren, und jetzt beim Testen gibts ein Problem:

    Zitat

    Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: DMX.DMXController.startDevice()V
    at DMX.DMXController.startDevice(Native Method)

    Ich rufe zuerst init() auf, da passt noch alles. Erst beim aufrufen von startDevice() kommt die Fehlermeldung.
    Die Java-Klasse:

    Die Header-Datei aus der JNI Kompilierung:


    Die Header-Datei light.h:

    und die light.cpp-Datei:

    Die DLL wird gefunden, denn wenn ich für System.load() einen anderen Parameter angeb, schreit er. Auch wenn ich statt .load() .loadLibrary() verwend und die DLL ins system32-Verzeichnis kopier, kommt dasselbe raus.

    Was kann da nicht stimmen?

    5 Mal editiert, zuletzt von Stephe (30. September 2008 um 20:27)

  • Kann es sein, dass deine DLL noch andere DLLs braucht, die das Java nicht im Pfad hat? Die VC2005 dlls sollten ja eigentlich im Pfad sein, wenn du's installiert hast, aber schau mal genau nach, ob's vielleicht daran liegt. Der Rest sieht eigentlich recht vernünftig aus.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!