dll laden
-
Hi,
zur Ausführung meines Programmes muss ich die jvm.dll laden. Laut Sun muss diese unbedingt an der Stelle verbleiben, wo sie bei der Installation des SDK hingeschrieben wurde. Also habe ich die DLL mit unten geposteter Zeile geladen.
HINSTANCE DLL_Handle = LoadLibrary("C:\\Programme\\Java\\j2re1.4.2_01\\bin\\client\\jvm.dll");Beim Ausführen der .exe erscheint dennoch ein Dialog:
Die Anwendung konnte nicht gestartet werden, weil jvm.dll nicht gefunden wurde.Dieser Dialog erscheint auch, wenn ich die .dll erst gar nicht versuche zu laden. Anscheinend kommt er gar nicht bis zu dem Aufruf, der in der main() steht. Der Aufruf an sich funktioniert. Ich habe ihn in einer anderen Anwendung ausprobiert. Er findet die dll und lädt sie.
Weiß jemand Rat?
Danke
Martin
-
Kopier die doch mal in dein Verzeichnis oder das Windows-Verzeichnis.
-
Martin M. schrieb:
Hi,
zur Ausführung meines Programmes muss ich die jvm.dll laden. Laut Sun muss diese unbedingt an der Stelle verbleiben, wo sie bei der Installation des SDK hingeschrieben wurde. Also habe ich die DLL mit unten geposteter Zeile geladen.
HINSTANCE DLL_Handle = LoadLibrary("C:\\Programme\\Java\\j2re1.4.2_01\\bin\\client\\jvm.dll");Beim Ausführen der .exe erscheint dennoch ein Dialog:
Die Anwendung konnte nicht gestartet werden, weil jvm.dll nicht gefunden wurde.Dieser Dialog erscheint auch, wenn ich die .dll erst gar nicht versuche zu laden. Anscheinend kommt er gar nicht bis zu dem Aufruf, der in der main() steht. Der Aufruf an sich funktioniert. Ich habe ihn in einer anderen Anwendung ausprobiert. Er findet die dll und lädt sie.
Weiß jemand Rat?
Danke
MartinDein Code lädt die DLL erst zur Laufzeit - wenn das Programm schon lange läuft.
Du hast Deinen Code aber so compiliert, daß Du die DLL "statisch dazugelinkt" hast. D.h. Dein Prog "weiß jetzt", daß es Funktion XYZ aus DLL ZYX.dll benötigt, um überhaupt laufen zu können. Windows sucht Dir diese DLL in DEM Verzeichnis, von wo das Prog gestartet wurde (wo Deine EXE liegt) und im Windows\System (oder 32??) - Verzeichnis. Findet Windows die DLL nicht, kommt besagte Fehlermeldung.

Also entweder die DLL in besagte Verzeichnisse (wo die EXE liegt z.B.) - dann brauchst Du Deinen Code allerdings nicht - oder halt neu dynamisch linken.
-
Also entweder die DLL in besagte Verzeichnisse (wo die EXE liegt z.B.) - dann >brauchst Du Deinen Code allerdings nicht - oder halt neu dynamisch linken.
Wie gesagt: Kopieren geht nicht, weil die .dll da bleiben muss wo sie ist.
Was meinst Du mit dynamisch linken?mfg
martin
-
Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hi,
Problem gelöst. Ich habe den Pfad der jvm.dll der path Variablen hinzugefügt. Nicht sehr elegant. Naja.
mfg