Christian Zerbes
Grünschnabel
Hallo zusammen, wir haben heir ernste Probleme, eine dll Datei aus Java heraus auszurufen. Folgende Ausgangssituation (bzw. das Ziel des Ganzen):
Wir haben eine dll, die das Gewicht einer Waage ausliest, diesen Wert wollen wir in unser Java-Programm reinbekommen.
Jetzt war der Versuch, das ganze mittels JNA umzusetzen, also einfach die Methoden der dll (die uns komplett bekannt sind) aufzurufen. Zuerst habe ich versucht, wie in den zahlreichen Tutorials im Netz die Methoden der user32.dll und kernel32.dll aufzurufen, die im system32 Ordner liegen. Hat wunderbar funktioniert.
Dann wollten wir natürlich unsere eigene (bzw. vorhandene) dll aufrufen. Dabei handelt es sich um eine aus C-Dateien generierte dll (wir haben sogar den Quellcode zu den Dateien, aber wir haben heir kein C-Knowhow, deswegen können wir damit nicht viel anfangen. Die dll die wir haben, haben wir ebenfalls zugeschickt bekommen). Das Ganze dann analog aufgebaut. Beim Aufruf der Native.loadLibrary()-Methode bekommen wir folgenden Fehler (ADDI_REG ist der Name unserer dll):
Folgende Orte für die dll wurden bereits ausprobiert:
- system32 Ordner
- C:\lib Ordner mit -Djava.library.path=C:\lib und/oder -Djna.library.path=C:\lib
- Ordner der exportieren .jar Datei
- auch zahlreiche Neustarts halfen nichts
Also einen Schritt zurückgegangen und nach folgender Anleitung eine eigene (C++) dll erstellt. Wieder eingebunden, gibt den gleichen Fehler.
Wir haben mal beide dlls mit DependencyWalker angeschaut, und bei beiden fehlen wohl ein paar Abhängigkeiten:
- MathFunctionsDll (aus dem msdn Tutorial): MSVCP80D.DLL (zwei mal...)
- ADDI_REG (unsere): ADDI_INT.DLL, ADDIKERN.DLL, MSVCRT20.DLL, IESHMIS.DLL
Weiss nicht, wie relevant das ist, v.a. weil bei dieser nach Tutorial generierten dll auch einiges fehlt...
Wir sind jetzt hier schon mit 3 Mann einen ganzen Tag am Suchen nach einer Lösung, ganz Google leergesucht, alles probiert, die Nerven liegen blank, weil niemand weiter weiß.
Nochmal kurz zu den Hard-/Softwareangaben:
- Win7 x64
- Java 1.6 x64
- Jars auch auf x86 Rechner mit x86 Java ausprobiert
Falls noch weitere Infos von Nöten sind, bitte nachfragen, auf jeden Fall brauchen wir Hilfe, weil wir am verzweifeln sind.
Vielen Dank.
Wir haben eine dll, die das Gewicht einer Waage ausliest, diesen Wert wollen wir in unser Java-Programm reinbekommen.
Jetzt war der Versuch, das ganze mittels JNA umzusetzen, also einfach die Methoden der dll (die uns komplett bekannt sind) aufzurufen. Zuerst habe ich versucht, wie in den zahlreichen Tutorials im Netz die Methoden der user32.dll und kernel32.dll aufzurufen, die im system32 Ordner liegen. Hat wunderbar funktioniert.
Dann wollten wir natürlich unsere eigene (bzw. vorhandene) dll aufrufen. Dabei handelt es sich um eine aus C-Dateien generierte dll (wir haben sogar den Quellcode zu den Dateien, aber wir haben heir kein C-Knowhow, deswegen können wir damit nicht viel anfangen. Die dll die wir haben, haben wir ebenfalls zugeschickt bekommen). Das Ganze dann analog aufgebaut. Beim Aufruf der Native.loadLibrary()-Methode bekommen wir folgenden Fehler (ADDI_REG ist der Name unserer dll):
Code:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'ADDI_REG': Das angegebene Modul wurde nicht gefunden.
Folgende Orte für die dll wurden bereits ausprobiert:
- system32 Ordner
- C:\lib Ordner mit -Djava.library.path=C:\lib und/oder -Djna.library.path=C:\lib
- Ordner der exportieren .jar Datei
- auch zahlreiche Neustarts halfen nichts
Also einen Schritt zurückgegangen und nach folgender Anleitung eine eigene (C++) dll erstellt. Wieder eingebunden, gibt den gleichen Fehler.
Wir haben mal beide dlls mit DependencyWalker angeschaut, und bei beiden fehlen wohl ein paar Abhängigkeiten:
- MathFunctionsDll (aus dem msdn Tutorial): MSVCP80D.DLL (zwei mal...)
- ADDI_REG (unsere): ADDI_INT.DLL, ADDIKERN.DLL, MSVCRT20.DLL, IESHMIS.DLL
Weiss nicht, wie relevant das ist, v.a. weil bei dieser nach Tutorial generierten dll auch einiges fehlt...
Wir sind jetzt hier schon mit 3 Mann einen ganzen Tag am Suchen nach einer Lösung, ganz Google leergesucht, alles probiert, die Nerven liegen blank, weil niemand weiter weiß.
Nochmal kurz zu den Hard-/Softwareangaben:
- Win7 x64
- Java 1.6 x64
- Jars auch auf x86 Rechner mit x86 Java ausprobiert
Falls noch weitere Infos von Nöten sind, bitte nachfragen, auf jeden Fall brauchen wir Hilfe, weil wir am verzweifeln sind.
Vielen Dank.