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。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章