![]() |
Problem mit dynamisch geladener DLL
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo.
Ich habe mir das lange schon vorgenommen und endlich auch umgesetzt. Eine Unit, die eine DLL kapselt von statisch auf dynamisch umstellen. Das zuweisen der Prozeduren scheint auch zu funktionieren, zumindest sieht es dannach aus. Solange die DLL im Programmverzeichnis liegt oder in den Suchpfaden arbeitet es tadellos. Liegt sie aber (wie ich es gern will) optional im Temp-Verzeichnis lädt es die DLL nicht, obwohl ich dafür eine extra Routine im initialization gebastelt hab. ich hab bereits sämtliche DCU's gelöscht und das Package dem die Unit angehört neu kompiliert. Es bringt alles nichts. Vielleicht habt ihr dazu ja eine Idee. Die Datei ist angehängt. Vielen Dank schon mal im Voraus. |
Re: Problem mit dynamisch geladener DLL
Wie ist denn GetTempDir definiert? hat der zurück gegebene Pfad den Pfadtrenner \ oder nicht?
|
Re: Problem mit dynamisch geladener DLL
Die ist aus der CodeLib und hat den Trenner... hab schon ne Box werfen lassen..
|
Re: Problem mit dynamisch geladener DLL
Ich pushe nur ungern, aber hat da jemand mehr Ahnung? Ich verzweifel langsam. Kann es sein, dass es am absoluten Pfad liegt? (Bei mir kommt da der String 'D:\Users\Temp\lib...dll' raus, hab den dll-Namen nich im Kopf ;) )
|
Re: Problem mit dynamisch geladener DLL
hast du schonmal mit FileExists geprüft ob die Datei auch wirklcih gefunden wird?
|
Re: Problem mit dynamisch geladener DLL
Wenn die DLL da liegt, dann sollte sie auch geladen werden. Mach mal:
Delphi-Quellcode:
Dann sollten wir mehr wissen.
if FileExists(GetTempDir + 'libeay32.dll') then
begin hLib := LoadLibrary(PChar(GetTempDir + 'libeay32.dll')) if hLib = INVALID_HANDLE_VALUE then MessageBox(0, PChar(SysErrorMessage(GetLastError)), 'LoadLibrary', 0); end else MessageBox(0, PChar(Format('Datei nicht in %s gefunden', [GetTempDir])), 'FileExistst', 0); |
Re: Problem mit dynamisch geladener DLL
Das ist ja ge nau so drin... hm... ich poste mal den initialization-Teil:
GetTempDir feuer bei mir den string 'D:\Users\Temp\' raus. hLib ist im Implementation als var hLib: cardinal; deklariert
Delphi-Quellcode:
hrm... wird evtl. das finalization zu früh getriggert?
initialization
if FileExists(GetTempDir + 'libeay32.dll') then hLib := LoadLibrary(PChar(GetTempDir + 'libeay32.dll')) else hLib := LoadLibrary('libeay32.dll'); if hLib <> 0 then begin @BN_new := GetProcAddress(hLib, 'BN_new'); @BN_init := GetProcAddress(hLib, 'BN_init'); @BN_clear_free := GetProcAddress(hLib, 'BN_clear_free'); @BN_free := GetProcAddress(hLib, 'BN_free'); @BN_rand := GetProcAddress(hLib, 'BN_rand'); @BN_num_bits := GetProcAddress(hLib, 'BN_num_bits'); @BN_bin2bn := GetProcAddress(hLib, 'BN_bin2bn'); @BN_bn2bin := GetProcAddress(hLib, 'BN_bn2bin'); @BN_hex2bn := GetProcAddress(hLib, 'BN_hex2bn'); @BN_bn2hex := GetProcAddress(hLib, 'BN_bn2hex'); @BN_is_bit_set := GetProcAddress(hLib, 'BN_is_bit_set'); @BN_cmp := GetProcAddress(hLib, 'BN_cmp'); @BN_set_word := GetProcAddress(hLib, 'BN_set_word'); @BN_lshift := GetProcAddress(hLib, 'BN_lshift'); @BN_add_word := GetProcAddress(hLib, 'BN_add_word'); end; finalization FreeLibrary(hLib); end. |
Re: Problem mit dynamisch geladener DLL
Push, falls du mein Posting übersehen haben solltest.
|
Re: Problem mit dynamisch geladener DLL
Sorry, Leute... hab es gefunden... die Frickler, die das verbrochen habn, haben noch in andren files die Datei benutzt ;) also noch mehr anpassen. Danke euch trotzdem.
Und danke Lucky... durch deine Möglichkeit hab ich bemerkt, dass meine modifizierte Datei die DLL im Temp definitiv findet |
Re: Problem mit dynamisch geladener DLL
Solch eine Fehlerbehandlung solltest du zu mindest beim Entwickeln zum Debuggen immer einbauen. Und zum Schluss noch für den Anwender, damit der weiß, was los ist und dir einen entsprechende Fehlerbericht geben kann, sonst kommt bei dir nur an: "Geht nicht." und damit kannst du dann auch nichts anfangen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz