2016-02-27 152 views
5

我在Windows 8.1上使用Microsoft Visual Studio 2015。我想編譯一個針對Windows XP的程序。我已經在谷歌和其他類似的問題上進行了查看,但沒有任何幫助。在解決方案設置中,目標平臺工具集設置爲Windows XP,但目標平臺版本中沒有Windows XP選項。 我看過https://msdn.microsoft.com/en-us/library/windows/desktop/aa383745(v=vs.85).aspx(使用Windows頭),並添加了這行我的程序:如何在Microsoft Visual Studio C++中定位Windows XP

#define WINVER _WIN32_WINNT_WINXP 
#define _WIN32_WINNT _WIN32_WINNT_WINXP 
#define NTDDI_VERSION NTDDI_WINXP 

但它仍然無法正常工作。它說它找不到「MSVCP140.dll」。我得到這個DLL後,開始抱怨找不到「VC140.dll」。之後是「ucrtbased.dll」,然後最後是「api-ms-win-core-string-11-1-0.dll」,我甚至沒有在我的Windows 8.1電腦上安裝它。該程序可以在Windows 8.1上運行,但不能在Windows XP上運行。 如何讓程序在Windows XP上運行?

+0

fyi windows xp不在支持範圍之內。 –

+0

對錯誤更具體。 –

+0

不再支持Windows XP,因此死亡後的MS IDE版本不再包含對該無效操作系統的支持。如果您想要定位陳舊的操作系統,請使用陳舊的IDE版本。 –

回答

25

爲了建立一個Windows XP兼容的EXE與VS 2015年(或2012 VS/VS 2013),你必須使用v140_xp平臺工具集,而不是默認v140平臺工具集。

查看項目屬性,在常規頁面:

Property Page

這是因爲默認的平臺工具集使用Windows 8.1 SDK(或者你可以選擇進入Windows 10 SDK),這僅支持爲Windows Vista或更高版本構建應用程序。當您選擇v140_xp平臺工具集,您使用的版本的Windows 7.1 SDK這是最後一版支持針對Windows XP或Windows Server 2003

注意,Visual Studio可以瞄準了Windows XP Service Pack 3中的或Windows Server 2003 Service Pack 2. C/C++運行時與舊版本的Windows不兼容。

如果你在你的應用程序中使用的DirectX,這有一些深刻的影響,因爲很多Windows的SDK 7.1和Windows 8 SDK之間變化。有關詳細信息,請參見this post

隨着2015年VS,你還需要選擇自定義Windows XP的支持,安裝選項,或通過程序&特點/微軟的Visual Studio 2015 /更改... /修改:

Modify

+1

我確實將它設置爲v140_xp,但它仍然不起作用。如果它未設置爲v140_xp,則會顯示錯誤消息「xxxx.exe不是有效的win32應用程序」。如果我將它設置爲v140_xp,它會抱怨我在問題中提到的丟失的DLL。 – Tyler

+2

你試圖在Windows XP系統上運行它,或者你已經安裝了VS 2015的機器嗎? –

+1

您是否在目標PC上安裝了VC++ Redistributables?例如:「C:\ Program Files文件(x86)\ Microsoft Visual Studio 14.0 \ VC \ redist \ 1033 \ vcredist_x86.exe」 – Pierre

相關問題