![]() |
Aufruf eines WebService aus einer DLL heraus
Hallo Leute,
ich habe Probleme eine DLL zu entladen mit der ich einen WebService aufgerufen habe. Die DLL wird dynamisch angebunden, die Funktion aufgerufen und wenn ich dann die DLL mit FreeLibrary entladen will hängt sich mein Proc dabei auf. Hier erst mal die Funktion in der DLL:
Delphi-Quellcode:
Das proc das die DLL aufruft sieht erst mal so aus:
CoInitialize(nil);
service := GetInversServiceSoap(); service.PublishLocationByCarAliasID(CarID, nLonDegree, nLonMinute, rLonSecond, nLatDegree, nLatMinute, rLatSecond); CoUninitialize();
Delphi-Quellcode:
Irgendjemand ne Idee?
FDLLHandle := 0;
SaveGPS := Nil; FDLLHandle := LoadLibrary('SaveGPS.DLL'); if FDLLHandle <> 0 then begin @SaveGPS := GetProcAddress(FDLLHandle, 'SaveGPSCarID'); SaveGPS(5054.4759, 758.9962, 0); FreeLibrary(FDLLHandle); end; |
Re: Aufruf eines WebService aus einer DLL heraus
Hallo Uwe,
das Problem hatte ich in der Vergangenheit auch. Habe es dann wie folgt gelöst:
Delphi-Quellcode:
Gruß
library WebMediaWebClient;
{$R *.RES} uses Windows, Sysutils, activex, availability,//meine Funktionsunit für Dich ohne Belang Comobj; procedure DLLEntryPoint(dwReason:dword); begin case dwReason of DLL_PROCESS_ATTACH: begin OleCheck(CoInitialize(nil)); end; DLL_PROCESS_DETACH: begin CoUnInitialize; //OLE DeInitializieren end; end; end; exports BHGetAvailability;//Export aus meiner Funktionsunit begin DllProc := @DLLEntryPoint; DllEntryPoint(DLL_PROCESS_ATTACH); end. Uwe Lange |
Re: Aufruf eines WebService aus einer DLL heraus
Hallo Uwe,
Danke, jetzt gehts! |
Re: Aufruf eines WebService aus einer DLL heraus
Das Problem ist vermutlich das du mit CoUninitialize dein COM-Appartment abmeldest obwohl du noch gültige Interface-Zeiger hast. Wenn diese nun (automatisch) freigegeben werden so kracht es auf COM-Ebene.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 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 by Thomas Breitkreuz