Seite 1 von 2
Problem mit Ausführen des Programms auf anderem Computer
Verfasst: 19. Juni 2006 13:28
von Sym
Hallo,
Zur Ausgangssituation: Ich entwickle unter Windows 2000 SP4 mit MSVC2005 Express Edition und Qt4.1.3.
Mein Programm lässt sich ohne weiteres kompilieren und ausführen. Nun habe ich eine Release-Datei erzeugt und den Dependency Walker angeschmissen um die Abhängigkeiten zu Prüfen. Dabei kam heraus:
Code: Alles auswählen
e:\qt\4.1.3\bin\QTGUI4.DLL
e:\qt\4.1.3\bin\QTCORE4.DLL
c:\winnt\system32\MSVCR80.DLL
c:\winnt\system32\KERNEL32.DLL
Soweit so gut. Also habe ich die exe zusammen mit den Qt-Bibliotheken in ein Verzeichnis geschmissen und auf einen Windows XP Rechner kopiert.
Beim Starten des Programms kommt jedoch die Fehlermeldung (mit Rechtschreibefehler!):
Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembeseitigung sollten Sie die Anwendung neu installieren.
Das sagt mir nun nicht sehr viel.
Habt ihr da einen Tip?
Verfasst: 19. Juni 2006 13:46
von ChMaster
servus,
hast auch die Datei: MSVCR80.DLL und MSVCP80.DLL mitgegeben?
Verfasst: 19. Juni 2006 13:52
von Sym
Hallo,
nein, habe ich zunächst nicht mitgegeben, da es ja auch nicht bei den Abhängigkeiten dabei stand.
Allerdings habe ich die Datei gerade noch mal aus dem System32-Verzeichnis mit kopiert und leider ist da noch derselbe Fehler.

Verfasst: 19. Juni 2006 14:33
von ChMaster
servus,
wurde eine *.manifest datei für dein programm estellt, den ich glaube
.net 2.0 erstellt eine für deine anwendung. wenn du die hast kopier sie
mit und versuch es noch einmal.
Verfasst: 19. Juni 2006 14:39
von Sym
Ich habe nun den kompletten release-Ordner mit kopiert - dort war auch eine Manifest-Datei enthalten. Allerdings weiß ich nicht, was .Net damit zu haben sollte.
Allerdings hat auch das nicht zum Erfolg geführt.
Verfasst: 19. Juni 2006 14:48
von ChMaster
servus,
schau mal im Dependency Walker genau an was du brauchst.
mit genau meine ich die DLLs (Qt only) bei deiner anwendung.
also aufklappen heisst es
bei mir tritt der fehler nicht auf, wobei ich auch VC++2005 Express
benutze.
dies waren leider meine vermutungen was diese problem angeht,
daher fällt mir nichts weiteres ein

Re: Problem mit Ausführen des Programms auf anderem Computer
Verfasst: 19. Juni 2006 14:59
von macman
Sym hat geschrieben:Diese Anwendung konnte nicht gestartet werden, weil die Anwenungskonfiguration nicht korrekt ist. Zur Problembeseitigung sollten Sie die Anwendung neu installieren.
Schon mal auf die Idee gekommen Tante Gugel damit zu füttern? Das ist nämlich kein Qt, sondern ein VS8 Problem, und da sind schon viele drüber gestolpert. Ich auch
Guck mal in folgendem Ordner [VS Install Dir]\VC\redist\x86\Microsoft.VC80.CRT. Da findest Du die benötigten dlls und eine dazu gehörenden Manifest Datei. Die ist wichtig, ohne der bekommst Du diese so aussagekräftige Fehlermeldung.
Verfasst: 19. Juni 2006 15:31
von Sym
@ChMaster:
Ich habe alle ersichtlichen DLLs mitkopiert, leider mit keinem Erfolg.
@macman:
Ich habe leider bei Google dazu keine Lösung finden können. Leider finde ich auch das Verzeichnis bei mir nicht. Im VC-Verzeichnis gibt es bei mir leider kein Redist.
Ich fand im Verzeichnis c:\winnt\winsxs das Unterverzeichnis x86_Microsoft.VC80.CRT_1fblabla, welches DLLs enthielt.
Und eine Manifest Datei, welche ebenfalls den Verzeichnisnamen hat.
Auch mit diesen Dateien hatte ich leider keinen Erfolg.
Verfasst: 19. Juni 2006 15:39
von Sym
Ok, nach dem Stichwort Microsoft.VC80.CRT konnte ich schon mehr im Internet finden.
Anscheinend legt die Express Edition das Manifest-File nicht bereit. Muss ich mal sehen, wie ich mir das zusammen baue. Die DLLs befinden sich im o.g. angegebenen Verzeichnis - ist bei der Express Edition halt anders.
Verfasst: 19. Juni 2006 15:51
von macman
Sym hat geschrieben:Im VC-Verzeichnis gibt es bei mir leider kein Redist.
Wird wohl an der VS Pro Edition liegen, die ich benutze.
Sym hat geschrieben:Auch mit diesen Dateien hatte ich leider keinen Erfolg.
Ich konnte das Problem lösen, in dem ich folgende Dateien mit ins Programmverzeichnis gepackt habe:
msvcp80.dll
msvcr80.dll
Microsoft.VC80.CRT.manifest
Mehr war eigentlich nicht zu tun. Es dauerte nur etwas, bis ich zu der Erkenntnis kam, das die Manifest-Datei mit da rein muss.
Verfasst: 19. Juni 2006 15:58
von FlorianBecker
Also ich habe das Problem mit dem Parameter -MT gelöst, als ich Qt gebaut habe. Damit musst du auch die runtimes keine Rücksicht mehr nehmen.
Verfasst: 19. Juni 2006 15:59
von Sym
Wunderbar, danke Euch beiden.
Das werde ich gleich mal als Tutorial aufsetzen.
Also, genau diese Dateien mussten mit kopiert werden. Allerdings gibt es bei der Express Edition kein redist-Verzeichnis und die entsprechenden DLLs liegen wie oben angegeben auch woanders.
Das Manifest-File fehlt komplett. Allerdings kann man das einfach selbst erzeugen:
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright © 1981-2001 Microsoft Corporation-->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<noInheritable/>
<assemblyIdentity
type="win32"
name="Microsoft.VC80.CRT"
version="8.0.50608.0"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b" />
<file name="msvcr80.dll"/>
<file name="msvcp80.dll"/>
<file name="msvcm80.dll"/>
</assembly>
Ich hoffe, das hilft auch anderen Leuten.
Verfasst: 19. Juni 2006 16:03
von Sym
FlorianBecker hat geschrieben:Also ich habe das Problem mit dem Parameter -MT gelöst, als ich Qt gebaut habe. Damit musst du auch die runtimes keine Rücksicht mehr nehmen.
Aha, wo genau finde ich dazu was? Hört sich interessant an. Warum muss ich dann darauf keine Rücksicht mehr nehmen?
Verfasst: 19. Juni 2006 16:42
von FlorianBecker
Verfasst: 19. Juni 2006 17:08
von Sym
Vielen Dank dafür. Ich glaube, das versuche ich auch einmal.