Visual Studio 2012 を使って、 Windows XP で動作させるアプリを開発するのは、可能ですがちょっとした設定が必要です。単純にビルドしてできたexeファイルをXPで実行しようとすると、エラーになります。
Visual Studio 2012 の開発環境でXP用アプリを開発するには、Visual Studio 2012 Update 1以上(本稿執筆時点での最新版は Update 4)をインストールし、プロジェクトのプロパティで、プラットフォームツールセットの「v110_xp」と書かれたものを選択する必要があります。
この設定でビルドしたexeファイルなら、XPで実行することができます。
Visual Studio ならこれでいいのですが、Qt SDK / Qt Creatorで開発したアプリをXPで実行させるため、上記のような設定をQtプロジェクトで行う方法を紹介します。
最も重要な点は、リンカに次のようなオプションを指定することです。
/SUBSYSTEM:"WINDOWS,5.01"
上記は、32ビットアプリの場合で、64ビット版Qt SDKを使用した、64ビットアプリの場合は、バージョン番号は、5.02を指定します。
実際のプロジェクトファイルは、以下のようになります。
#------------------------------------------------- # # Project created by QtCreator 2015-01-15T13:06:36 # #------------------------------------------------- QT += core gui widgets TARGET = QtTest TEMPLATE = app SOURCES += main.cpp\ MainWindow.cpp HEADERS += MainWindow.h FORMS += MainWindow.ui QMAKE_LFLAGS_WINDOWS-=/SUBSYSTEM:WINDOWS QMAKE_LFLAGS_WINDOWS+=/SUBSYSTEM:"WINDOWS,5.01"
最後の2行で、リンカに渡すオプションから「/SUBSYSTEM:WINDOWS」を取り除いて、「/SUBSYSTEM:"WINDOWS,5.01" 」に変更しています。(64ビットアプリの場合は、5.01ではなくて5.02とします。)
上で紹介した方法は有効ですが、別の書き方で同じ事が実現できることが分かりました。ちょっとした違いですが、よりシンプルに記述できます。QMAKE_LFLAGS_WINDOWSの値を書き換えるのではなく、QMAKE_SUBSYSTEM_SUFFIXの値を設定します。
QMAKE_LFLAGS_WINDOWS-=/SUBSYSTEM:WINDOWS QMAKE_LFLAGS_WINDOWS+=/SUBSYSTEM:"WINDOWS,5.01"
↑これは不要になります。
win32:QMAKE_SUBSYSTEM_SUFFIX=,5.01
↑代わりにこれを追加します。
「=」の直後の「,」を忘れないようにします。リンカに渡る /SUBSYSTEM の値は同じなので、結局やっていることは変わりありません。
実行に最低限必要なファイルは、概ね以下のようになります。文字コーデック、画像、印刷、データベースなどを使用する際は、さらに、Qt SDKに含まれるDLLが必要となる場合があります。