2014-07-24 58 views
11

我的Visual Studio 2012解決方案包含C#項目,VB.NET項目,C++/CLI項目和C++項目。目前,我有三個平臺:x86x64Win32。當我添加x64時,我注意到它被所有項目使用。我想和x86一樣做,所以我可以刪除Win32在C++項目中使用x86平臺

所以我去了配置管理器,選擇了一個C++項目,在平臺組合框中我只有選項:Win32x64,新建和編輯。如果我選擇New,則唯一可用的選項是ARM

那麼我想在我的.vcxproj中用x86代替Win32。沒有工作(它默認爲x64)。然後我看着.sln文件,但無法看到x64如何管理爲每個項目工作。

+0

WIN32是一個不是平臺的API。至少不像x86和x86_64那樣。 –

+1

在羅馬時...... http://i.imgur.com/pMdq3Y5.png –

+0

「Win32」與「x86」(x64)是一樣的。 Visual Studio中的默認配置名稱是「Win32」(x86 32位),「x64」(64位)和「ARM」(Windows RT 32位)。 –

回答

11

這些IDE差別太大,無法獲得32位代碼的通用平臺名稱。否則,反映託管代碼與C++代碼有着根本的區別。託管項目平臺名稱只能是AnyCPU,x86,x64。 C++項目平臺名稱只能是Win32,x64和ARM。歷史發揮作用,Win32來自20世紀90年代初,當時Windows NT引入了32位版本的winapi。區別於16位版本。沒有真正的機會再次改變它而不冒險破壞現有項目。

託管項目的x86平臺名稱也不是完全標準的,這在VS2010中是錯誤的,您似乎已經繼承了該名稱。 VS2012使用舊VS版本的AnyCPU平臺名稱創建新項目。它非常準確地描述了託管代碼的真實平臺,它可以根據抖動來運行。這個名稱是不相關的,只有Project + Properties,Build選項卡設置很重要,以強制在運行時使用特定的抖動。換句話說,如果您不強制使用x86,那麼即使平臺名稱是x86,您的程序仍將作爲64位進程運行。這是VS2010的錯誤,它造成了很多苦難。

所以你很堅持這一點。這不是一個真正的問題,IDE可以很好地處理混音。您已經瞭解Build + Configuration Manager對話框,它清楚地顯示了在使用Build + Build或按F5時將構建哪些平臺。

+0

好吧,我無法擺脫Win32。回到這個煩惱的源頭:有什麼辦法可以防止在這裏選擇Win32(見圖)?因爲有時VS會混淆並且Win32被選中,並且出現奇怪的構建錯誤。 http://i.imgur.com/p8AJHOO.png –

+0

使用工具+自定義刪除組合框,所以你不能讓VS犯這個錯誤。 –

+0

但我需要該組合來選擇x86或x64。這真的是VS,而不是我。當我卸載一個項目,編輯它並重新加載它時(通常這是在構建完成時調用msbuild目標) –