Crash (R6034) beim Starten von Applikation
-
Dann nimm doch einfach das Manifest.
Name: Meine.exe.manifest
-
Wovon? Bzw was soll ich damit tun?
-
Wenn Du die VC8 CRT/ATL/MFC DLLs verwendet will (musst), dann brauchst Du ein Manifest auf allen Rechnern >= XP. (Punkt)
Du hast nun zwei Möglichkeiten:
1. Du lieferst mit Deiner EXE eine separate Datei mit, welche "name-der.exe.manifest" heist
2. Du bettest diese Manifestdatei in die Resourcen Deiner EXE einZum Inhalt:
Eigentlich erzeugt das VS2005 automatisch eine Manifest-Datei und bindest diese auch autoamtisch ein. Du kannst auch nochmals in Deinen Projekteinstellungen nachschauen: "Configuration Properties|Manifest Tool|Input and Output|Embed Manifest:Yes"
In Deinem Debug/Release-Verzeichnis müsste auch irgendwas mit dem Namen "manifest" auftauchen.Oder eben Du nimmst den Inhalt, den ich weiter oben gepostet habe.
-
Jochen, wie gesagt, die Manifest-Datei wird erzeugt und ins Programm eingebettet. Das ist nicht der Fehler.
-
Ach so... hab ich irgendwie überlesen...
Vermutlich braucht aber noch die DLL ein Manifest mit der ID2... (irgendwas war da mal).
Sonst Schick mir einfach mal das Projekt zu...
-
Jochen Kalmbach schrieb:
Vermutlich braucht aber noch die DLL ein Manifest mit der ID2... (irgendwas war da mal).
Kannst du da genauer werden?
-
dEUs schrieb:
Jochen Kalmbach schrieb:
Vermutlich braucht aber noch die DLL ein Manifest mit der ID2... (irgendwas war da mal).
Kannst du da genauer werden?
Ich suche noch... hab da nur was im Hinterkopf gehabt...
ADD: Vermutlich lag ich aber falsch. Es muss gehen, wenn Du in der EXE das korrekte Manifest drin hast. Was steht denn in dem Manifest für die EXE drin?
Versuche es doch mal mit einem externen Manifest!
-
Das Manifest sieht so aus:
<?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.DebugCRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> </dependentAssembly> </dependency> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC80.DebugMFC" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> </dependentAssembly> </dependency> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity> </dependentAssembly> </dependency> </assembly>Bitte schick mir eine eMail über das Forum, so dass ich deine eMail-Adresse habe, dann würde ich es dir mal zuschicken.
-
Das Problem ist, dass Du eine Debug-Version Deiner EXE erzeugst aber eine DLL die Release-Version der CRT will!
Also entweder Du änderst Dein Debug-Manifest nach<?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.DebugCRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> </dependentAssembly> </dependency> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC80.CRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> </dependentAssembly> </dependency> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.VC80.DebugMFC" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity> </dependentAssembly> </dependency> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity> </dependentAssembly> </dependency> </assembly>Oder (besser) Du linkst gegen die korrekte LIB, welche auch die Debug-CRT verwendet. Meine Vermutung ist, dass wenn Du gegen die Release-LIBs Deiner DLLs linkst und Du gemeinsamen Speicher über die DLL Grenzen hinweg verwendest, dann wird es sowieso zu abstürzen kommen, da Du ja unterschiedliche CRT-Versionen verwendest.
Also: Linke gegen die korreten Debug-LIBs, welche die *gleiche* CRT verwenden!
-
Hi Jochen,
dank dir, das war das Problem! Wenn ich das ganze als Release kompilere, dann tritt der Fehler nicht mehr auf.
Werde mich dann mal auf die Suche der Debug-DLLs machen.