Seite 1 von 1
[gelöst] Bekomme Qt Abhängigkeiten nicht gelöst...
Verfasst: 11. September 2007 23:36
von Tobi
Hallo Leute,
also einfache Geschichte: habe ein kleines Tool mit Qt4.3.0 geschrieben und würde es jetzt auch gerne weitergeben.
Ich nutze VisualStudio Pro 2005. Mit meinem Tool liefere ich die QtCore4.dll, QtGui4.dll, QtXml4.dll und msvcp80.dll mit. Aber trotzdem startet es nicht sondern beglückt mich mit einem fatal error.
Der
Process Explorer zeigt keine weiteren Qt dlls mehr an die mein Programm benötigt. Natürlich werden noch gut 30 andere dlls angezeigt, aber die meisten sind wohl Windows Standard.
Deswegen jetzt meine Frage: was brauche ich denn noch alles um Qt auf anderen Windows Rechnern zum Laufen zu bringen? Ich komm einfach nicht mehr weiter.
Ich hoffe einer von euch Qt Spezis kann mir helfen
PS: die dlls lege ich mit in den aktuellen Ordner mit meiner .exe
Verfasst: 12. September 2007 07:16
von CaptnChaos
Ich dlaube du brauchst auf dem anderen Rechner noch die VC2005 Redistributable Package.
Hier zu haben
Is nur en Schuss ins blaue. Das geht gewiss auch indem du noch die fehlende
Dll ins Verzeichniss kopierts.
Wenn dir die Lösung mit dem Package nicht reicht, poste ma die Liste mit den dlls.
Re: Bekomme Qt Abhängigkeiten nicht gelöst...
Verfasst: 12. September 2007 07:26
von macman
Tobi hat geschrieben:Ich nutze VisualStudio Pro 2005. Mit meinem Tool liefere ich die QtCore4.dll, QtGui4.dll, QtXml4.dll und msvcp80.dll mit.
msvcr80.dll nicht? Aber wahrscheinlich hast Du nur die Manifest-Datei nicht mitgeliefert. Falls Du VS SP1 nutzt, solltest Du auch Qt neu compiliert haben, sonst hast Du zwei Version der DLLs im Manifest stehen.
Verfasst: 12. September 2007 10:16
von Tobi
Erstmal vielen Dank für die schnelle Antwort!
Ich dlaube du brauchst auf dem anderen Rechner noch die VC2005 Redistributable Package.
Naja, das gibt es bei Microsoft nur bis WindowsXP und die Dateien sind dann wohl bei Vista schon mit dabei. Aber genau darauf teste ich es.
Entwickelt wird es unter WinXP Pro und getestet auf WinVista (VMware).
Hab es jetzt nochmal ausprobiert und folgendes mitgeliefert:
.exe, QtCore4.dll, QtGui4.dll, QtXml4.dll, msvcp80.dll, msvcr80.dll und zusätzlich noch die Manifest Datei. Alles in einem Ordner.
Resultat(auf Vista):
The application has failed to start because its side-by-side configuration is incorrect.
und im Eventlog steht folgendes drin:
Activation context generation failed for "C:\Users\Tobi\GAU\GAU.exe.Manifest". Dependent Assembly Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.762" could not be found. Please use sxstrace.exe for detailed diagnosis.
So, ich nutze zwar Visual Studio mit SP1, hab aber seitdem das ServicePack drauf ist Qt 2 mal neu kompiliert (wegen neuen Versionen und benötigten Plugins).
Zum Abschluss mal noch die Liste mit dlls die mir der Process Explorer zeigt:
- advapi32.dll
comctl32.dll
comdlg32.dll
gdi32.dll
imm32.dll
kernel32.dll
lgscroll.dll
MSCTF.dll
msvcp80.dll
msvcr80.dll
msvcrt.dll
ntdll.dll
ntmarta.dll
ole32.dll
oleaut32.dll
QtCore4.dll
QtGui4.dll
QtXml4.dll
rpcrt4.dll
samlib.dll
shell32.dll
shlwapi.dll
user32.dll
usp10.dll
uxtheme.dll
winmm.dll
wldap32.dll
ws2_32.dll
ws2help.dll
xpsp2res.dll
Nochmals Danke, hoffe mir kann geholfen werden...
Verfasst: 12. September 2007 10:29
von RHBaum
wenn auf dem Zielsystem das VS SP1 nicht installiert ist, musst du noch ne redistributable Version von dem aufm Zielsystem installieren.
Die gibts irgendwo auf der MS HP
Du linkst mit VS SP1 gegen andere Dlls, die zwar gleich heisen, aber ueber das manifest auf unterschiedliche versionen gesetzt werden. Die neuen versionen der Runtime brauchst du nun auf dem rechner auch .... und die runtimes einfach mitliefern geht ned ... da die halt uber das manifest gesteuert werden, also du in der reg auch paar eintraege zu brauchst, etc.
Ciao ...
Verfasst: 12. September 2007 10:36
von macman
Tobi hat geschrieben:The application has failed to start because its side-by-side configuration is incorrect.
Klarer Fall von falscher Manifest-Datei. Um der DLL-Hölle zu entkommen, hat Microsoft die Manifest-Hölle erschaffen. Danke, danke [ganz tief verbeug]
Schau dir die Manifest-Datei
deiner Applikation mal an. Meist wird die eingebunden und findet sich in deinem Release-Ordner. Die sollte so aussehen, mehr nicht:
Code: Alles auswählen
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
<dependency>
<dependentAssembly>
<assemblyIdentity type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
</dependentAssembly>
</dependency>
</assembly>
Tobi hat geschrieben:Zum Abschluss mal noch die Liste mit dlls die mir der Process Explorer zeigt:
Zeigt der nur die DLLs oder auch aus welchem Pfad sie geholt werden?
Verfasst: 12. September 2007 11:21
von Tobi
Stimmt, ihr zwei habt recht. Die runtimes existieren zwar auf dem Zielsystem, aber in einer anderen Version (unter Windows/winsxs/ zu finden). Dort existieren für die unterschiedlichen Versionen unterschiedliche Ordner mit den nötigen dlls.
Und jetzt hab ich mir
das benötigte Packet runtergeladen und es funktioniert einwandfrei.
Neben .exe, den 3 nötigen Qt dlls und der manifest Datei brauche ich jetzt nichts mehr (abgesehen von dem redistributable package).
Vielen vielen Dank, ihr drei habt mir sehr geholfen!
PS @macman: Der Process Explorer zeigt natürlich auch den Pfad an woher die nötigen dlls kommen.
Verfasst: 27. August 2008 19:36
von Zonk
Hmm jungs, ihr habt den Falschen Ansatz. Ihr werdet nie Softwarepakete bauen könne, wo ihr garantieren könnt dass sie auf dem Zielrechner funktionieren.
Wenn ihr eh schon unter Visual Studio kompiliert, macht halt eine Setupprojekt und fügt dort die Projektausgabe eures Programmprojektes hinzu. Beim bauen des Setuppaketes werden dann alle nötigen Abhängigkeiten mit in das Paket installiert bzw als Downloadquelle hinzugefügt.
War überrascht wie einfach das geht und dann ists ein Installerpaket wie man es kennt.
Grüße Zonk
Verfasst: 28. August 2008 09:33
von macman
Zonk hat geschrieben:Ihr werdet nie Softwarepakete bauen könne, wo ihr garantieren könnt dass sie auf dem Zielrechner funktionieren.
Oh, ein Kenner der Szene
Zonk hat geschrieben:Wenn ihr eh schon unter Visual Studio kompiliert, macht halt eine Setupprojekt und fügt dort die Projektausgabe eures Programmprojektes hinzu.
Aha, und das soll für professionelle Setups brauchbar sein? Ist nicht dein Ernst. Dazu gehört schon ein bisschen mehr, vor allem bei Abhängigkeiten zu anderen Installationen, Mehrsprachigkeit und und und.
Zonk hat geschrieben:Beim bauen des Setuppaketes werden dann alle nötigen Abhängigkeiten mit in das Paket installiert bzw als Downloadquelle hinzugefügt.
Und was ist mit dynamisch geladenen DLLs? Wie sie z.B. von QNetwork benötigt werden, wenn man mit OpenSLL compiliert hat. Abhängigkeiten wirst Du da keine finden. Es kommt keine Fehlermeldung, es funktioniert einfach nicht, vollkommen kommentarlos.
Diese M$-Setup reicht vielleicht um ein Programm unters Volk zu bringen, bei dem es ein einfaches Kopieren auf Platte auch getan hätte. Aber der gemeine Win-User erwartet ja immer gleich ein Setup

Verfasst: 8. Dezember 2008 19:53
von Zonk
Bedaure, aber das MS-Etupprojekt kann auch mehr.
Du hast recht, es ist "scheiße", aber nur aus 2 gründen:
1. Die Dokumentation ist zum Kotzen.
2. Microsfot hat in allen Versionen < MS VS Teamsolution den Setup-Assistenen arg beschnitten. Aber mit ORCA kann ma nviele Features noch nachrüsten.
Aber jedem das seine
