![]() |
LoadLibrary beendet mit Delphi 10.3 Application
Hallo zusammen,
da ich mit 10.2 ziemliche Performance-Probleme in der IDE hatte habe ich jetzt auf Delphi 10.3 upgedatet. IDE ist wieder etwas schneller. Auf einigen Rechnern arbeitet meine Anwendung einwandfrei. (Win10 und Win7). Auf zwei Rechnern (beide Win10 Pro) habe ich aber das Problem, dass die Anwendung ohne jegliche Rückmeldung beendet wird sobald ich über
Delphi-Quellcode:
eine DLL dynamisch lade.'xxxx: LoadDll4 02' wird noch angezeigt. Danach erscheint die Sanduhr und dann verschwindet die Anwendung aus dem Taskmanager.
ShowMessage('xxxx: LoadDll4 01');
Result := GetModuleHandle(PWideChar(sDLL)); // prüfen ob DLL schon geladen ShowMessage('xxxx: LoadDll4 02'); if Result = 0 then Result := LoadLibrary(pWideChar(sDll)); // DLL dynamisch laden ShowMessage('xxxx: LoadDll4 03'); Ich habe herausgefunden, dass einfache DLL auch auf diesen beiden Rechnern geladen werden. Die, die zum Abbruch führen, haben eine Datenbankverbindung. Ich habe es mit zwei DLL getestet. Daraufhin habe ich in das OnCreate des DataModuls eine ShowMessage gesetzt. Das wird aber nicht aufgerufen. Hat jemand eine Idee woran der Absturz liegen könnte? Welcher Code in der DLL wird bereits mit dem Aufruf von LaodLibrary ausgeführt? Ich verwende UniDac für den Zugriff auf MsSQL. Grüße und Danke Gerd |
AW: LoadLibrary beendet mit Delphi 10.3 Application
DllMain wird beim LoadLibrary aufgerufen.
(Bzw. der Code zwischen begin und end. in der .dpr) |
AW: LoadLibrary beendet mit Delphi 10.3 Application
Schwer zu sagen.
Wenn ein Anwendung in so einem Fall bei mir abschmierte, dann ging der Griff einer DLL ins Leere. In puren C implementiere DLLs (MySQL bspw...) kennen kein Exception Handling. Dann liegt es an der DLL auf welche Art der exit erfolgt. Fehlen ganz fundamentalen Funktionen die man in libc würde unter UNIX suchen ist eher Panik angesagt. Fehlen die MSC/C++ Runtime DLLs? Microsoft Visual C++ Redistributable in der passenden Version? Zitat:
|
AW: LoadLibrary beendet mit Delphi 10.3 Application
Danke für das schnelle Feedback. Es gibt keine DllMain und kein Code zwischen begin.
Die dpr sieht so aus
Delphi-Quellcode:
Die DLL funktionieren seit Jahren auf verschiedensten Rechnern. (Start mit Delphi 3.0, 5.0, 7.0, XE, 10, 10.1, 10.2.x)
uses
SysUtils, Dialogs, Classes, ComCtrls, Forms, Ed_user in 'Ed_user.pas' {foedUser}, Di_uslog in 'Di_uslog.pas' {fodiUserLogin}, int_User in 'int_User.pas', U_hilfs1 in '..\..\All\ALL_UNIT\U_hilfs1.pas', u_Debug in '..\All_Unit\u_Debug.pas', u_NTRegistry in '..\..\All\All_Unit\u_NTRegistry.pas', int_Splash in '..\..\All\ALL_Form\int_Splash.pas', u_InitDat in '..\All_Unit\u_InitDat.pas', u_IniDo in '..\..\All\All_Unit\u_IniDo.pas', U_initFo in '..\ALL_UNIT\U_initFo.pas', U_InitDb in '..\ALL_UNIT\U_InitDb.pas', dm_ConDoQMa in '..\All_Form\dm_ConDoQMa.pas' {dmConDoQMa: TDataModule}, u_RegDo in '..\..\All\All_Unit\u_RegDo.pas'; {$R *.RES} exports edUser, GetUser, InitUser0, SetUser; end. Die EXE und die DLL's liegen in einem GroupProject und wurden alle gleich kompiliert. Die mit Delphi 10.2.2 kompilierte Version läuft problemlos auf ca. 60 Rechnern. Sie liefen auch auf den den beiden Rechnern, die jetzt Probleme bereiten. (Rücksetzung auf die 10.2.2 Version hat das Problem wieder beseitigt) Nur mit Delphi 10.3 gibt es wieder ein neues Problem. Grüße Gerd |
AW: LoadLibrary beendet mit Delphi 10.3 Application
Hallo,
ich würde mal den Dependency walker benutzen, um auf diesen Rechnern mal nachzuschauen, ob irgendeine Dll fehlt. |
AW: LoadLibrary beendet mit Delphi 10.3 Application
Du sagst, dass eine Datenbankverbindung aufgebaut wird. Sind denn die entsprechenden Zugriffskomponenten auf den beiden Systemen vorhanden? Bei MSSQL braucht man ja z.B. je nachdem wie man auf die Datenbank zugreifen will den Native Client.
|
AW: LoadLibrary beendet mit Delphi 10.3 Application
Ich würde als Allererstes den
![]() |
AW: LoadLibrary beendet mit Delphi 10.3 Application
Ok. Das klingt spannender.
Ich verwende weder Win 10 noch Rio ... Kann es sein, dass das Projekt in Rio (10.3) 64-bittig wird? (abwegig) --- Kannst du die DLLs in einem Kommandozeilenprogramm probieren zu laden und schauen ob du mit GetLastError noch genauere Information zurückbekommst? Zitat:
|
AW: LoadLibrary beendet mit Delphi 10.3 Application
Was noch ausgeführt wird ist der initialization Bereich deiner eingebundenen Units - falls du da irgendwas drin hast?
|
AW: LoadLibrary beendet mit Delphi 10.3 Application
Zitat:
Nur so ins Blaue getippt ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21: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-2025 by Thomas Breitkreuz