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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM