Meine Anwendung (C++, kompiliert mit Mingw, hauptsächlich wxWidgets, Boost und SFML), die reibungslos unter Windows 7 oder Vista läuft, funktioniert nicht ordnungsgemäß auf Windows XP SP3. Ich habe eine manifest-Datei, die die ausführbare Datei ermöglicht die Verwendung von Windows XP/Vista/7 Look'n'Feel:Anwendung wird nicht mit XP SP3 und einem mit comctl32 verbundenen Manifest geladen
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
xmlns="urn:schemas-microsoft-com:asm.v1"
manifestVersion="1.0">
<assemblyIdentity
name="Game Develop Editor.Release - Edittime.App"
processorArchitecture="x86"
version="1.0.0.0"
type="win32"/>
<description>Executable</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</assembly>
Wenn ich die Manifest-Datei entfernen/umbenennen, kann ich die ausführbare Datei mit Windows XP SP3 starten (Aber mit hässlichen veralteten Kontrollen). Wenn ich die Manifest-Datei lasse, läuft sie ohne Probleme mit Vista/7, aber mit Windows XP SP3 wird die Anwendung in den Speicher geladen (ich kann es im Task-Manager sehen), aber nichts tun. Keine Fehlermeldung, es stürzt nicht einmal ab.
Wenn ich es neu kompiliere, um eine Konsole anzuzeigen, zeigt letzteres nichts an.
Wenn ich gdb zum debuggen verwende, zeigt der Debugger "Startprogramm: ..." an und wird dann geblockt (Control + C funktioniert nicht).
Ich habe versucht, Dependency Walker auf der ausführbaren Datei zu verwenden.
Hier ist das Protokoll mit der Manifest-Datei: http://pastebin.com/J6T8KBH8
(Hier ist das Protokoll ohne das Manifest. http://pastebin.com/zrYzRaWE/In diesem Fall wird die Anwendung ohne Probleme geladen und läuft noch am Ende des Protokolls)
Ich habe die Zeile hervorgehoben, die in Dependency Walker in rot angezeigt wird, die sich auf eine fehlende Prozedur in comctl32 bezieht. Außerdem scheint das Protokoll ohne spezifische Fehler unterbrochen zu sein.
Haben Sie eine Idee, warum die Anwendung scheinbar ohne einen Absturz oder eine Meldung unterbrochen wird, wenn Sie ein Manifest verwenden?