1. 程式人生 > >vs裡32位專案和64位專案的區別

vs裡32位專案和64位專案的區別

由於作業系統記憶體分配的不同,導致軟體開發過程中,需要編譯不同版本的軟體。
1。編譯程式根據需要選擇不同的編譯環境。
x86和win32為32位程式,x64為64位程式,可以選擇不同的編譯條件形成不同位的軟體。
2。程式碼中的基本資料型別,會根據作業系統的位數來分類記憶體大小
如int型在32位作業系統下為4位元組,在64位系統下為8位元組。
因此在64位上對int型資料操作,編譯生成32位的程式,有可能導致int型越界,軟體出現問題。
3。32位的程式在64位作業系統上執行,由於64位作業系統的定址和偏移問題,也有可能導致程式在執行過程中,計算結果與32位系統不一致。
4。64位作業系統理論上能夠箭筒32位和64位軟體,32位作業系統不能執行64位程式。

vs中,
x64: 生成的程式只能在64位系統中執行。如果你的使用者用的是32位的系統(比如XP),則執行不了程式。
x32: 生成32位程式,由於64位系統也能執行32位的程式,所以這個選項跟Any CPU一樣可以同時執行在兩種系統中,但效率沒有Any CPU高,因為64位的軟體跟CPU互動的資料要比32位的接近大一倍。
所以當你要把專案程式碼轉移到另一臺計數機時,就要考慮這個問題。假如你原來選擇的目標平臺是x64,新電腦的系統是32位,當你按F5除錯執行時,則跑不起來,這時把目標平臺改成Any CPU或者x32就能解決了。

注意:如果你的專案引用有32位的dll(c++編譯生成的),則只能選擇32位平臺,否則也會報錯,整個專案要保持一致。

在專案除錯的過程中,我們可以看到32位與64位程式載入的dll不同。
32位程式從system32中載入dll;而64位程式從syswow64中載入dll。

轉自 https://blog.csdn.net/qq_22201697/article/details/78177765