私のアプリケーション (C++、Mingw でコンパイル、主に wxWidgets、Boost、および SFML を使用) は、Windows 7 または Vista でスムーズに動作しますが、Windows XP SP3 では正しく動作しません。実行可能ファイルが Windows XP/Vista/7 ルックアンドフィールを使用できるようにする .manifest ファイルがあります。
<?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 XP SP3 で実行可能ファイルを起動できます (ただし、コントロールが古くなっています)。マニフェスト ファイルをそのままにしておくと、Vista/7 では問題なく動作しますが、Windows XP SP3 では、アプリケーションはメモリに読み込まれます (タスク マネージャーで確認できます) が、何もしません。エラー メッセージは表示されず、クラッシュすることさえありません。
コンソールを表示するために再コンパイルすると、コンソールには何も表示されません。
gdb を使用してデバッグすると、デバッガーに「Starting program:...」と表示され、ブロックされます (Control+C は機能しません)。
実行可能ファイルで Dependency Walker を使用しようとしました。
マニフェスト ファイルを含むログは次のとおりです: http://pastebin.com/J6T8KBH8
(マニフェストを含まないログは次のとおりです: http://pastebin.com/zrYzRaWE / この場合、アプリケーションは問題なくロードされ、まだ実行されています。ログの最後に。)
Dependency Walker で赤で表示されている行を強調表示しました。これは、comctl32 で欠落しているプロシージャを参照しています。また、ログは特定のエラーなしで中断されているようです。
マニフェストを使用しているときに、クラッシュやメッセージも表示されずにアプリケーションが中断されるように見える理由について何か考えはありますか?