2013-01-13 92 views
6

我最近從Visual Studio Express的2010升級到Visual Studio 2012 Express的Windows桌面。我知道以前缺乏兼容性,目標是Windows XP,但認爲這已通過更新1(我已安裝)解決。MS的Visual Studio 2012 Express的Windows桌面 - 針對Windows XP

然而,我仍然有困難與C++應用程序我一直在使用2012點快速編譯針對Win XP的。我已將平臺工具集設置爲「Visual Studio 2012 - Windows XP(v110_xp)」,但這沒有什麼區別。當我嘗試在我的Windows XP系統(我通過VirtualBox運行Windows XP)上運行我編譯的應用程序時,出現錯誤,我的應用程序「不是有效的Win32應用程序」。

我自己也嘗試設置CLR支持「無公共語言運行庫支持」和運行時庫「多線程(/ MT)」。

即使使用下面的代碼一個非常基本的空白C++項目,我不能讓它在XP上運行:

#define _WIN32_WINNT 0x0501 
#define WINVER 0x0501 
#define NTDDI_VERSION 0x0501 

#include <iostream> 

int main() 
{ 
    std::cout << "TEST" << std::endl; 

    std::cout << std::endl << std::endl << "Press ENTER to close this window."; 
    std::cin.get(); 
    return 0; 
} 

誰能告訴我在哪裏,我要和我的編譯器去錯了/項目設置?

P.s.我已在我的XP虛擬機上安裝了MS VC++ 2010和2012可再發行組件包。我使用Visual Studio Express 2010編譯的應用程序在我的XP虛擬機上正常工作。

+0

檢查你的目標平臺的構建 - >配置管理器。 – shf301

+0

您當然可以在XP上運行使用VC 10 toolchain編譯的程序。這與使用VS 2010進行編譯基本相同,但是您並沒有聲明您需要在該問題中使用VC 11工具鏈。 –

+0

@ shf301 - 目標平臺是Win32。 – Colin

回答

0

該消息表明您的構建沒有生成32位應用程序 - 例如,如果它是與版本相關的API,則會看到另一個錯誤,指示無法找到該元件。既然您已經指出您在配置管理器中使用了正確的目標平臺,請檢查您的資源管理器以確保您沒有衝突參數或默認值。如果你看到選項/ MACHINE:X64的鏈接,那麼你已經發現了問題。

如果不工作,我想你可以嘗試運行的Sysinternals的Process Explorer,看看哪些CL /鏈接實際上正在與參數啓動。希望有所幫助。

1

檢查項目的 「配置屬性 - >鏈接 - >系統 - >子系統」 屬性。
如果爲空,與(/SUBSYSTEM:CONSOLE)(/SUBSYSTEM:WINDOWS)填充它。

1

這工作:

配置屬性 - >鏈接器 - >系統 - >子系統= /子系統:WINDOWS

配置屬性 - >常規 - >平臺工具 - > SubsystemVisual工作室2012 - Windows XP中(v110_xp)

使用Visual Studio 2012快速更新3

1

使用與mingw重新編譯的GNU GCC工具鏈bro。 MSVS實際上只是最小化依賴關係,但其中一些仍然保持在exe中。只需編譯gcc suports全靜態鏈接,具有較小的exe大小和穩定的兼容性。

相關問題