jni

Status
Nicht offen für weitere Antworten.

nameac

Bekanntes Mitglied
hallo,

kann man in java auch statische libraries laden quasi in c *.lib compelieren und dann diese methoden aus java heraus laden?
 
G

Guest

Gast
Bin mir nicht sicher ob ich dich richtig verstehe, aber es scheint mir du willst in dein Projekt eine "Libary" einbinden, die du eventuell selber erstellt hast?

Wenn ja, dann exportiere sie am besten als jar-File und füge den erzeugten jar-File dem Projekt, in dem du auf die Bibliothek zugreifen möchtest, zu. falls du eine IDE benutzt geht das ganz einfach unter Projekt -> properties (je nachdem welche du verwendest)
 

nameac

Bekanntes Mitglied
kannst du mir sagen wie ich eine unter visual studio 2005 eine lib als jar exportiere und dann kann ich diese einfach in mein java prog importieren?
 
W

WilliamBlake

Gast
Ja, das geht. Aber nicht indem man die lib als Jar exportiert, sondern indem man sich einen JNI-Wrapper für seine Library schreibt.



JNI Spec von SUN
 

thE_29

Top Contributor
LIb als Jar?!

Muss man das verstehen?

Du machst ne .dll unter Windows und die kannst du laden!

Aber nur dann wenn du die richtigen Typen in den Headern hast!
 

nameac

Bekanntes Mitglied
aber wenn man mit dem jni arbeitet lädt man doch eine dll, konnte aus dem link nicht erfahren ob man auch libs laden kann
 
G

Guest

Gast
Code:
System.loadLibrary("lib-name");
 

nameac

Bekanntes Mitglied
mit diesem befehl lädt man dll's ausschließlich oder nicht hast du das schon mal ausprobiert und es hat gefunzt?
 

nameac

Bekanntes Mitglied
das eine sind statische libraries die werden direkt beim linken hinzugefügt bei einer dll wird der quellcode immer nur dann in den speicher geladen und zum programm hinzugefügt wenn dieses die jeweilige methode aus der dll gerade benötigt zur laufzeit des programms. so ne linking zur laufzeit
 
A

Anmeldeboykottierer

Gast
nameac hat gesagt.:
das eine sind statische libraries die werden direkt beim linken hinzugefügt bei einer dll wird der quellcode immer nur dann in den speicher geladen und zum programm hinzugefügt wenn dieses die jeweilige methode aus der dll gerade benötigt zur laufzeit des programms. so ne linking zur laufzeit

Ok, dir ist also klar, dass das statische Bibliotheken sind. Wenn die also statisch gelinkt werden heißt dass was? Wie sollte Java denn statisch linken? Java wird doch JustInTime gelinkt, alles was du erzeugst ist ein Plattformunabhäniger Zwischencode. In den kannst du statisch Java-Bibliotheken linken. Bei C Bibliotheken hättest du also das Problem, dass dein Javacode nicht mehr Plattformunabhängig ist. Bei einer Dll oder .so oder jeder anderen Dynamischen Bibliothek hast du die Auswahl und die kann man auch zur Laufzeit laden.

Gruß Der Anmeldeboykottierer
 

thE_29

Top Contributor
Naja, wenn du dir ne .so für Linux/Unix/macos erstellst, dann schon :D (relativ gesehen halt)
 
A

Anmeldeboykottierer

Gast
Java hat ja durchaus die Möglichkeit dein Betriebssystem zu ermitteln. Das geht natürlich erst zur Laufzeit, aber wenn du hier das OS prüfst, kannst du die entsprechende Dynamische Bibliothek laden.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben