Seite 1 von 1

Reload Qt dlls.

Verfasst: 22. April 2008 11:26
von linse
Hallo beisammen,
habe folgende problem:
Wenn ein fehler in einer Qt anwendung auftritt lässt sich danach kein
qt programm mehr starten.
(win32 exeption ... ).
Wie kann ich unter windows die qt dlls neu laden?
Hatte jemand schon ähnliche probleme ?

(qt 4.3 mingw windows Xp).
Wenn ich Regsvr32 /u c:\Qt\4.3.4\bin\QtCore4.dll eingebe
bekomme ich die Meldung:

was loaded, but the DLLUnregisterServer entry point was not found.
The file can not be registered

mfg Dirk

Verfasst: 22. April 2008 12:07
von RHBaum
Wenn ich Regsvr32 /u c:\Qt\4.3.4\bin\QtCore4.dll eingebe
Aehm, die QT dlls sind keine ActiveX komponenten, die man registrieren kann darf muss ... zum glueck :-)
Wie kann ich unter windows die qt dlls neu laden?
eigentlich gar ned ^^ von aussen ....
Das programm das die dlls verwendet, muss die mit loadlibrary anziehen, und wenn es "fertig" ist, mit freelibrary wieder freigeben. Alles andere haendelt das BS .... da kannst ned viel eingreifen.

Ich vermute eher das deine anwendung da grossen muell baut, bzw. da was anderes voll im argen ist ....
Wenn ein fehler in einer Qt anwendung auftritt lässt sich danach kein
qt programm mehr starten.
weil das klingt total aussergewoehnlich :-)
kann es sein, das dein programm auf der qt dll rumschreibt ?
Wenn du den rechner neustartest, kannst du dann die QT pragromme wieder normal starten ?
Was benutzt dein prog fuer komponenten ?

Normal muesste jeder prozess die dlls getrennt anziehen koennen, ohne sich mit anderen prozessen ins gehege zu kommen ... vielleicht geht das laden schon nicht ? Aber wenns schon mal ging, da iss irgendwo anders was faul , am Betriebssystem oder nen Prozess der versucht in speicherbereiche rumzuschreiben wo er ned sollt ^^

Ciao ...

Verfasst: 22. April 2008 12:45
von linse
Nach einen neustart lassen sich alle anwendungen starten.
Auch die anwendungen die schon laufen gehen weterhin.
Habe nur wenig erfarung unter windows, kann ich denn
loadlibrary und freelibrary manuell starten ?

nachtrag:
ab- und wieder anmelden reicht auch schon.

Verfasst: 22. April 2008 14:49
von macman
linse hat geschrieben:kann ich denn loadlibrary und freelibrary manuell starten ?
Klar, aber wozu? Für die Qt-DLLs ja wohl nicht, die werden auch nicht registriert. Wenn deine App abgestürzt ist und sich andere Qt-Apps dann nicht starten lassen, dann schau mal ob sich deine App noch im Taskmanager findet.

Verfasst: 22. April 2008 15:04
von RHBaum
loadlibrary und freelibrary manuell starten ?
Jein, normal solltest du das nicht ....

die entsprechenden statischen libs (die zu den anwendungen (exe, dll) hinzugelinkt werden) uebernehmen das fuer dich. Also beim programmieren macht man das mit den qt dlls eher seltener :-)

Von aussen kann man das eigentlich auch ned machen, weil das BS verwaltet das fuer den Prozess ... du kannst einzig den prozess killen, und der muesst die dll wieder freigeben ... und das erzwingt das BS sogar ....

Was total ungewoehnlich ist, das wenn eine QT app crasht, selbst wenn sie noch im speicher irgendwo haengt, das ne andere app (exe) die zwar die selben qt dlls benutzt, dann auch haengen bleibt, bzw. nen fehler wirft.

Eigentlich laed windows nur den "Dll Code" einmalig und da kann eiegntlich ned viel schief gehen .... die ganzen datenbereiche (stack, heap) werden eh fuer jeden prozess einzeln aufgezogen ... die duerfen sich ned ins gehege kommen .... normal darf da gar nix blocken ....

und das sind wirklich 2 unnerschiedliche exen, also die die crasht und die andere die dannach nimemr startet ?

Ciao ...

Verfasst: 22. April 2008 15:15
von linse
nach dem absturtz (jetzt provoziert),
Wird die Anwendung nicht im taskmanger angezeigt.