Visual C++ 2003 + .exe auf anderem Rechner ausführen
-
Hi.
An diesem Problem sitze ich jetzt schon einige Zeit und finde keine Lösung.
Ich habe ein Programm geschrieben, das auf meinem Rechner ohne Probleme funktioniert.
Kopiere ich das Programm auf meinen Laptop (is Win Vista drauf, dürfte aber eigentlich nix ausmachen denk ich mal) funktioniert es nicht mehr.Fehlermeldung ist "Anwendungsname.exe funktioniert nicht mehr"
Das Projekt ist btw. ein Win32-Konsolen-Projekt ohne Verwendung von MFC oder ATL.
Google und dieses Forum hier (wenn ich denn richtig gesucht hab) haben normalerweise 3 Antworten parat:
1. Statisch linken - Codeerstellung von MultiThreaded-DLL auf MultiThreaded.
Funktioniert in meinem Fall nicht, da ich SDL benutze. Bei SDL wird dringend davon abgeraten auf eine Einstellung ohne DLL zu wechseln.2. Redistributable-Package muss vorher installiert sein - dummerweise finde ich nirgendwo das redistributable-package von 2003, sondern nur von 2005 und 2008
3. DLL's mitliefern - bei 2005 sinds die msvcr80.dll, msvcp80.dll und msvcm80.dll sein, bei mir müssten es dann die msvcr71.dll und msvcp71.dll sein.
Die msvcm71.dll scheint nicht auf meinem Rechner zu sein - die Suche findet sie nicht.
Die beiden DLL's beizulegen, die ich gefunden hab, löst das Problem nicht.
Noch dazu ne Manifest-datei beizulegen (hab versucht die Manifest von 2005 so abzuändern das es zu meinem 2003 passt) hat auch nix geholfenHabt ihr irgendwelche Lösungsvorschläge, wie ich meine Anwendung auf anderen Rechnern zum Laufen bekomme?
-
Schau doch mal mit dem Dependency Walker nach, welche DLLs deine Anwendung auch wirklich läd.
Jene, die sie läd müssen sich dann zwingenderweise auch auf deinem Computer befinden, sonst hätten sie garnicht geladen werden können.
Diese DLLs musst du dann nur noch mit deiner Anwendung ausliefern.
-
Hi.
Danke erstma für den Tipp.Hab mal den DependencyWalker auf die .exe auf meinem Entwicklungsrechner und meinem Laptop losgelassen - folgendes is rausgekommen:
mein Entwicklungsrechner, wo das Programm funktioniert
mein Laptop, an dem das Programm nicht funktioniert
Wenn ich das ganze richtig deute, dann ist die einzige DLL die er auf meinem Entwicklungsrechner findet, aber nicht auf meinem Laptop die IEFRAME.DLL.
Allerdings hilft es nichts die entsprechende DLL in den Ordner mit reinzupacken.
Fehlermeldung bleibt die gleiche.
In der system32 von meinem Laptop gibts btw. auch eine IEFRAME.DLL.
Wenn ich nachdem ich die IEFRAME.DLL in den Ordner eingefügt hab nochmal den dependency-Walker drauf los lasse, sieht es immer noch gleich aus - immernoch Probleme mit der IEFRAME.DLL.Die Manifest Datei hab ich btw. wieder gelöscht (bzw. zuerst getestet und nachdems nich funktioniert hat sie gelöscht). An der Manifest kanns aber eigentlich nich liegen, oder?
Ansonten - sieht jemand noch was anderes auf den Bildern vom Dependency Walker? Was was ich übersehen hab?
-
Hm, ich hab mal sämtliche DLL's, die der Dependency Walker auf der ersten Ebene findet zum Release-Ordner hinzugefügt.
Also die OPENGL32.DLL, GLU32.DLL, usw. Selbst die KERNEL32.DLL .Immer noch die gleiche Fehlermeldung wenn man das Programm startet.
Hab auch mal das Programm jemandem geschickt, der WinXP hat - die gleiche Fehlermeldung. Also immer Die Anwendung konnte nicht gestartet werden.
Hat scheinbar nichts mit den DLLs zu tun. Oder ist der Schluss zu voreilig?
-
Guck mal in die Ereignisanzeige. Vielleicht ist der Fehler dort näher beschrieben.
-
Hier das Ereignisprotokoll:
Protokollname: Application Quelle: Application Error Datum: 21.04.2009 12:05:02 Ereignis-ID: 1000 Aufgabenkategorie:(100) Ebene: Fehler Schlüsselwörter:Klassisch Benutzer: Nicht zutreffend Computer: MartinL-PC Beschreibung: Fehlerhafte Anwendung ImageProcessingFramework.exe, Version 0.0.0.0, Zeitstempel 0x49eb0d15, fehlerhaftes Modul unknown, Version 0.0.0.0, Zeitstempel 0x00000000, Ausnahmecode 0xc0000005, Fehleroffset 0x00000000, Prozess-ID 0xb38, Anwendungsstartzeit 01c9c268a282b768. Ereignis-XML: <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> <System> <Provider Name="Application Error" /> <EventID Qualifiers="0">1000</EventID> <Level>2</Level> <Task>100</Task> <Keywords>0x80000000000000</Keywords> <TimeCreated SystemTime="2009-04-21T10:05:02.000Z" /> <EventRecordID>19670</EventRecordID> <Channel>Application</Channel> <Computer>MartinL-PC</Computer> <Security /> </System> <EventData> <Data>ImageProcessingFramework.exe</Data> <Data>0.0.0.0</Data> <Data>49eb0d15</Data> <Data>unknown</Data> <Data>0.0.0.0</Data> <Data>00000000</Data> <Data>c0000005</Data> <Data>00000000</Data> <Data>b38</Data> <Data>01c9c268a282b768</Data> </EventData> </Event>
Bisher hab ich noch nix sinnvolles zur ID 1000 kombiniert mit Source Application Error gefunden, was helfen könnte.
Kann jemand aus dem Protokoll mehr herauslesen, oder so?
-
Ich hab mal die VisualStudio 2008 Sp1 Express Edition runtergeladen und damit den Code nochmal kompiliert.
Auf anderen Rechner kommt aber immer noch der gleiche Fehler - auch mit den entsprechenden dll's und manifest datei...Ansonsten - die Problemsignatur ha ich grad mal anzeigen lassen, die sieht folgendermaßen aus:
Problemsignatur: Problemereignisname: APPCRASH Anwendungsname: ImageProcessingFramework.exe Anwendungsversion: 0.0.0.0 Anwendungszeitstempel: 49ededbb Fehlermodulname: StackHash_e9c8 Fehlermodulversion: 0.0.0.0 Fehlermodulzeitstempel: 00000000 Ausnahmecode: c0000005 Ausnahmeoffset: 00000000 Betriebsystemversion: 6.0.6000.2.0.0.768.3 Gebietsschema-ID: 1031 Zusatzinformation 1: e9c8 Zusatzinformation 2: ab026a48ae5101312a59279769e9e3c5 Zusatzinformation 3: 950f Zusatzinformation 4: 3bc607f4addd0d6aa0eadd7f779e0381
Außer vll. dem Fehlermodulname kann ich da nich viel hilfreiches rauslesen. Und da spuckt google keinen einzigen beitrag zu aus
-
StackHash... Hmmm...
Kanns sein, das das bei Vista nicht geht???
-
Programme die nicht für Vista gebaut wurden unter Vista auszuführen kann Probleme geben, ja. Es gibt meines Wissens aber eine Option, Programme in einem "XP Kompatibilitätsmodus" ausführen zu lassen oder so ähnlich. Google hilft da bestimmt weiter.
-
Also, das Programm ging weder bei anderen XP-Rechner noch bei anderen Vista-Rechnern.
Bei beiden wars die gleiche Fehlermeldung, Problemsignatur bzw. Ereignisbeschreibung kenne ich nich.
Hat sich jetzt auch erledigt. Ich hab das Projekt unter Code::Blocks neu kompiliert und es funktioniert jetzt auf anderen XP-Rechnern.
Bei anderen Vista-Rechner stürzt dummerweise das komplette System ab und er überprüft erstmal die Festplatte bevor er neu startet
Da hab ich noch keine Ahnung woran das liegt, könnte mir aber vorstellen das es von SDL kommt.
Naja, ist aber ein neues Problem und hat nix mit dem Thread hier zu tunDanke nochma an alle die sich Gedanken gemacht haben.