DLL/SO Host-Pfad ermitteln

dodik4711

Grünschnabel
Hallo Leute,

gibt es eine Möglichkeit die Host-Anwendung einer Library in der Library selbst zu ermitteln ?
In meinem Fall ist es so, dass ich eigentlich ein Java Programm habe, welches per JNI nativen Code aufruft. Dabei befinden sich 2 "identische", in C programmierte Librarys (DLL für Windows und SO für UNIX) in einem bestimmten Ordner.
Nun sollen diese Librarys also die Fähigkeit besitzen den absoluten Pfad der eigentlichen Host-Anwendung (in meinem Fall JAR-Datei) zu liefern.
Ist dies ohne weiteres möglich? Müssen OS-spezifische Funktionen eingesetzt werden, sodass der Quellcode der Librarys nicht mehr identisch ist ?

Danke im Voraus

PS: Den Pfad aus Java als Parameter an eine Library zu übergeben eignet sich hierbei aus bestimmten Gründen nicht.
 
Hi,

für Windows kannst du GetModuleFileName() mit dem ersten Parameter NULL aufrufen, dabei wird dir dann der Pfad/Dateiname von der Datei die den Prozess erstellt hat zurückgeliefert.

Gruß
RudolfG
 
Hi.
Nun sollen diese Librarys also die Fähigkeit besitzen den absoluten Pfad der eigentlichen Host-Anwendung (in meinem Fall JAR-Datei) zu liefern.
Deine Jar-Datei ist aber nicht die Host-Anwendung - deine Jar Datei wird durch die java.exe Anwendung ausgeführt.

Mit GetModuleFileName wirst du nur den Pfad der java.exe herausbekommen.

Gruß
 
Nun gut und wie würde dann ein Befehl bei Unix Systemen aussehen?

Wenn man also nur den Pfad der Java.exe (bei Windows) auslesen kann, besteht dann nicht die Möglichkeit auch die Parameter abzufragen?
Also sowas in der Art:
java.exe -jar C:\...\MyApp.jar

Oder gibt es vielleicht sogar eine andere Herangehensweise um den Pfad der Jar zu ermitteln?
 
Zurück