[gelöst] Warum läuft mein Qt Programm nicht ohne .NET ?

Verschiedenes zu Qt
Antworten
René
Beiträge: 75
Registriert: 15. August 2006 11:14
Kontaktdaten:

[gelöst] Warum läuft mein Qt Programm nicht ohne .NET ?

Beitrag von René »

Hallo,

ich hab mit Visual Studio ein Programm geschrieben, welches auf Qt4.2.0 und OpenCV 1.0rc1 aufsetzt. Irgendwelche .NET Bibliotheken verwende ich nicht. .NET ist aber zwangsläufig durch die Installation von Visual Studio 2005 Professional auf dem Rechner installiert.

Ich möchte nun das Programm auf einem anderen Rechner ausführen können, auf dem weder Qt noch OpenCV installiert sind. Das funktioniert auch prima, indem ich die benötigten Qt und OpenCV dll's mitliefere, allerdings nur solange auf dem Zielrechner das .NET Framework installiert ist. Auf einem frischen XP, also ohne alles, auch ohne .NET, läuft mein Programm dagegen nicht, aufgrund eines angeblichen Anwendungsfehlers, Neuinstallation der Anwendung wird als Tipp angegeben. Nach der Installation des .NET Frameworks auf dem frischen XP läuft mein Programm tadellos.

Wie kann das sein ? Ich bin die Projekteinstellungen meines Visual Studio Projekts durchgegangen, konnte nirgendwo irgendwas mit einer .NET Bibliothek in Verbindung bringen. Wenn ich wenigstens wüsste, wo ich anfangen könnte zu suchen, im Moment bin ich etwas ratlos.

Hat jemand eine Idee ?
Zuletzt geändert von René am 17. Oktober 2006 19:11, insgesamt 1-mal geändert.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn man 2005 benutzt hat man zwangsläufig diese Dependency - kann man nichts machen. Es gibt eine vcredistx86.exe (oder so ähnlich) - evtl.hilft die.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
René
Beiträge: 75
Registriert: 15. August 2006 11:14
Kontaktdaten:

Beitrag von René »

Das kann doch nicht wahr sein. Was soll das denn ? Warum Microsoft so einen Unfug ?

Eine Lösung wäre vielleicht, zum Entwickeln VS2005 zu benutzen, weil es einfach leistungsstark ist und für jeden Release, der an andere verteilt wird, dann "mal eben schnell" das ganze durch das alte Visual Studio 6 zu jagen, welches beispielsweise in VMware oder so läuft, nur für diesen Zweck. Dann hätte man Qt4 Programme ohne .NET Abhängigkeit, so, wie man es eigentlich auch erwarten würde.

Spricht da etwas gegen ? Außer, dass es umständlich ist.
Vermutlich wird der modernere Compiler aus VS2005 für heutige CPU's besser optimierten Code erzeugen, als es Visual Studio 6 kann, oder ?
Zuletzt geändert von René am 15. Oktober 2006 19:21, insgesamt 1-mal geändert.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

das die beiden MS DLL's mitgelifert.(die werde ja bei der .net installion sonst geliefert)
René
Beiträge: 75
Registriert: 15. August 2006 11:14
Kontaktdaten:

Beitrag von René »

@ BartSimpson

Ich weiß jetzt nicht genau, was du meinst, aber ich habe auch die Dateien

msvcp80.dll
msvcr80.dll

mitgeliefert, jene, die fehlen, wenn man kein .NET installiert hat. Aber es hilft nichts, das Qt Programm lässt sich nicht starten.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Hast du zufälliger weite ein Rechner mit win2k drauf? Dort sollte es ohne .net gehen. Denn ich fürchte es liegt an dem neuen Modus den MS ab XP eingeführt hat, wie das System Bibliothken findet. Wenn du in die Ereignisanzeige vom XP schaust, solltes du was finden, das er was im Assembly Cache nicht finden konnte. Denn die beiden DLL's von MS müssen genau dort hin. Nur kann man die da nicht einfach reinkopieren:(
Haste auch alle Manifestdatein mir kopiert?
Sym
Beiträge: 139
Registriert: 15. Mai 2006 15:38
Wohnort: Bremen

Beitrag von Sym »

René hat geschrieben:@ BartSimpson

Ich weiß jetzt nicht genau, was du meinst, aber ich habe auch die Dateien

msvcp80.dll
msvcr80.dll

mitgeliefert, jene, die fehlen, wenn man kein .NET installiert hat. Aber es hilft nichts, das Qt Programm lässt sich nicht starten.
Ich meine, Du brauchst noch die msvcm80.dll, sowie die Manifest-Datei.

Sonst schau mal in den Dependency Walker (o.ä.).
René
Beiträge: 75
Registriert: 15. August 2006 11:14
Kontaktdaten:

Beitrag von René »

So, ich habe mal das Paket vcredist_x86.exe, welches z.B. hier zu beziehen ist

http://www.microsoft.com/downloads/deta ... laylang=en

installiert auf dem Rechner mit frischem XP. Danach startet sofort mein Qt Programm und läuft einwandfrei.

Es werden lediglich aktuelle C++ Runtime Librarys installiert, das Paket ist gerade mal 2,5 MB groß, akzeptabel. Dennoch ist es natürlich nervig, wenn das Qt-Programm auf vielen verschiedenen Rechnern laufen soll. Vielleicht teste ich irgendwann nochmal das Ganze unter dem Betriebssystem Windows2000 oder der Entwicklungsumgebung Visual Studio 6 an. Im Moment bin ich erstmal mit dieser Lösung zufrieden. Hauptsache ist nämlich erstmal, dass ich nicht auf allen Rechnern .NET installieren muß, die das Qt-Programm ausführen wollen.

Durch das Paket vcredist_x86 benötige ich nun wirklich nur noch die Qt4 und OpenCV dll's im selben Verzeichnis wie die *.exe Datei. Die Microsoft C und C++ Runtime Libraries

msvcm80.dll
msvcp80.dll
msvcr80.dll

sind nun nicht mehr nötig. Diese liegen statdessen nach der Installation im WinSxS Ordner. Die Manifest Datei braucht man auch nicht (mehr).
Zuletzt geändert von René am 15. Oktober 2006 20:36, insgesamt 2-mal geändert.
René
Beiträge: 75
Registriert: 15. August 2006 11:14
Kontaktdaten:

Beitrag von René »

Sym hat geschrieben:Ich meine, Du brauchst noch die msvcm80.dll, sowie die Manifest-Datei.

Sonst schau mal in den Dependency Walker (o.ä.).
Ich habe bereits die ganze Zeit mit dem Dependency Walker gearbeitet, um überhaupt an die benötigten dll's zu kommen, die msvcm80.dll taucht dabei nicht auf. Ich habe sie aber dennoch kopiert, die Manifest-Datei auch, hat alles nichts genützt.
Sym
Beiträge: 139
Registriert: 15. Mai 2006 15:38
Wohnort: Bremen

Beitrag von Sym »

René hat geschrieben:
Sym hat geschrieben:Ich meine, Du brauchst noch die msvcm80.dll, sowie die Manifest-Datei.

Sonst schau mal in den Dependency Walker (o.ä.).
Ich habe bereits die ganze Zeit mit dem Dependency Walker gearbeitet, um überhaupt an die benötigten dll's zu kommen, die msvcm80.dll taucht dabei nicht auf. Ich habe sie aber dennoch kopiert, die Manifest-Datei auch, hat alles nichts genützt.
Hmm,
ich habe meine Programme so auf einem WinXP zum Laufen bekommen. Und die Rechner hatten reingarnichts mit .Net am Hut.

That's Life ;)
René
Beiträge: 75
Registriert: 15. August 2006 11:14
Kontaktdaten:

Beitrag von René »

So, nun habe ich die beste Lösung. Man muss noch nicht mal mehr das vredist_x86 Paket installieren auf dem Zielrechner, sondern es müssen lediglich folgende Datein ins selbe Verzeichniss wie die *.exe Datei:

Microsoft.VC80.CRT.manifest
msvcm80.dll (für mein Projekt nicht nötig)
msvcp80.dll
msvcr80.dll

Ich hatte lediglich die dll Dateien im Verzeichnis und die Manifest Datei meines eigenen Projekts, nicht aber die Microsoft.VC80.CRT.manifest Datei, daher klappte das nicht. Nun bin ich also in der Lage Qt4 Projekte mit VS2005 kompiliert auf jedem beliebigen Rechner ohne Visual Studio oder .NET oder VS2005 C++ Runtime Librarys auszuführen. Das ist für viele sicherlich nix Neues, aber jeder fängt ja mal klein an ;-)

Danke an alle, die geholfen haben.

Für andere Newbies:
Zu finden sind die Dateien unter:
C:\Programme\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT\
Antworten