SWIG UnsatisfiedLinkError

Der Wolf

Erfahrenes Mitglied
Hallo Leute,

ich habe mal wieder eine Frage an euch und hoffe einer kann mir helfen.
Ein Kollege und ich haben in C++ ein Library implementiert, die auch liblog4cxx verwendet. Ich wollte jetzt diese lib mit SWIG für Verwendung in Java wrappen (vorerst nur eine Klasse daraus). Aber ich bekomme immer ein "UnsatisfiedLinkError"

Java:
[junit] .../libfusionArtJNI.so: .../libfusionArtJNI.so: undefined symbol: _ZTIN7log4cxx7helpers13ObjectPtrBaseE
    [junit] java.lang.UnsatisfiedLinkError: .../libfusionArtJNI.so: .../libfusionArtJNI.so: undefined symbol: _ZTIN7log4cxx7helpers13ObjectPtrBaseE
    [junit]     at java.lang.ClassLoader$NativeLibrary.load(Native Method)
    [junit]     at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803)
    [junit]     at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1728)
    [junit]     at java.lang.Runtime.loadLibrary0(Runtime.java:823)
    [junit]     at java.lang.System.loadLibrary(System.java:1028)
    [junit]     at FuzzyArtMapTest.<clinit>(FuzzyArtMapTest.java:21)
    [junit]     at java.lang.Class.forName0(Native Method)
    [junit]     at java.lang.Class.forName(Class.java:169)
    [junit]

Ich habe schon versucht, die loglog4cxx statisch in die lib einzubinden, und den java.library.path anzupassen, aber ich bekomme den Fehler nicht weg. Hat jemand vielleicht einen Tipp für mich?

Gruß
Der Wolf
 
Hallo,

Anscheinend existiert die angegebene Funktion oder ähnlich nicht in der libfusionArtJNI.so, ODER du hast die Library auf der Java Seite gar nicht geladen.

Wurde die Bibliothek überhaupt via
Java:
System.loadLibrary("libfusionArtJNI");
geladen?

Falls ja, wurde die Bibliothek von dir kompiliert?
Mit welchem Compiler (gcc,...)?
Mit den richtigen Parametern?

Grüße,
Martin C.
 
Hi,

ja, die library wurde gefunden und auch von mir kompiliert. Mittlerweile habe ich auch gesehen, dass das mit dem statischen linken der log4cxx nicht geklappt hatte, weil mein Compiler wo anders noch eine .so Version davon gefunden hatte. ;)
Trotzdem ... auch mit der statischen Variante hat es nicht geklappt. Dann bekam ich ein "undefined symbol: apr_os_thread_current" oder ähnliches.
Ich habe jetzt erstmal die Abhängigkeit zur log4cxx raus genommen, aber falls ihr noch Ideen habt, immer her damit.
Ich hänge mal die CMakeLists.txt an, vielleicht hilft die dir ja weiter und du siehst auf den ersten Blick wo ich Mist gebaut habe. :)
Auf jedenfall schonmal Danke für deine Antwort :)

Gruß
Der Wolf
 

Anhänge

  • CMakeLists.txt
    5,7 KB · Aufrufe: 30
Hey,

ok. Ich glaube ich habe den Fehler mittlerweile gefunden. Ich denke ich hatte vergessen bei dem SWIG Part in der CMakeLists.txt noch das linken gegen die liblog4cxx hinzuzufügen. -.-
Vielen vielen Dank dafür, dass ihr auch nochmal mit rein geguckt habt. Ich hatte wohl schon zu lange darauf geguckt und den Wald vor lauter Bäumen nicht mehr gesehen *schäm*

Gruß
Der Wolf
 
Zurück