Мое приложение (C ++, скомпилированное с помощью Mingw, использующее в основном wxWidgets, Boost и SFML), которое работает гладко в Windows 7 или Vista, не работает должным образом в Windows XP SP3.У меня есть файл .manifest, который позволяет исполняемому файлу использовать Windows XP / Vista / 7 look'n'feel:
<?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>
Если я удаляю / переименовываю файл манифеста, я могу запустить исполняемый файл с Windows XPSP3 (но с уродливыми устаревшими элементами управления).Если я позволю файлу манифеста, он будет работать без проблем с Vista / 7, но с Windows XP SP3, приложение загружается в память (я вижу это в диспетчере задач), но ничего не делаю.Нет сообщения об ошибке, он даже не вылетает.
Если я перекомпилирую его для отображения консоли, последняя ничего не показывает.
Если я использую gdb для отладки, выводится сообщение отладчика "Запуск программы: ... "и затем блокируется (Control + C не работает).
Я попытался использовать Dependency Walker на исполняемом файле.
Вот журнал с файлом манифеста: http://pastebin.com/J6T8KBH8
(Вот журнал без манифеста: http://pastebin.com/zrYzRaWE / В этом случае приложение загрузилось без проблем и все еще работает в конце журнала.)
У меня естьвыделил строку, которая отображается красным цветом в Dependency Walker, что относится к отсутствующей процедуре в comctl32.Более того, кажется, что журнал прерывается без особых ошибок.
Есть ли у вас какие-либо идеи о том, почему приложение прерывается даже без сбоя или сообщения при использовании манифеста?