1. vs有沒有32位與64位的區別
visualstudio沒有專門的64位版,但32位版可以在64位系統上面正常使用。
由於操作系統內存分配的不同,導致軟體開發過程中,需要編譯不同版本的軟體。
編譯程序根據需要選擇不同的編譯環境,x86和win32為32位程序,x64為64位程序,可以選擇不同的編譯條件形成不同位的軟體。
代碼中的基本數據類型,會根據操作系統的位數來分類內存大小。
如int型在32位操作系統下為4位元組,在64位系統下為8位元組。
因此在64位上對int型數據操作,編譯生成32位的程序,有可能導致int型越界,軟體出現問題,32位的程序在64位操作系統上運行,由於64位操作系統的定址和偏移問題,也有可能導致程序在運行過程中,計算結果與32位系統不一致。
64位操作系統理論上能夠箭筒32位和64位軟體,32位操作系統不能運行64位程序。
在vs中,x64生成的程序只能在64位系統中運行。如果用戶用的是32位的系統(比如XP),則運行不了程序。
x32生成32位程序,由於64位系統也能運行32位的程序,所以這個選項跟AnyCPU一樣可以同時運行在兩種系統中,但效率沒有AnyCPU高,因為64位的軟體跟CPU交互的數據要比32位的接近大一倍。
所以當要把項目代碼轉移到另一台計數機時,就要考慮這個問題。假如原來選擇的目標平台是x64,新電腦的系統是32位,當你按F5調試運行時,則跑不起來,這時把目標平台改成AnyCPU或者x32就能解決了。
(1)vs32位系統編譯x64程序擴展閱讀:
如果項目引用有32位的dll(c++編譯生成的),則只能選擇32位平台,否則也會報錯,整個項目要保持一致。
在項目調試的過程中,可以看到32位與64位程序載入的dll不同。
32位程序從system32中載入dll;而64位程序從syswow64中載入dll。
64bit程序在x86-64處理器上並不會帶來明顯的性能提高,它只是增加了處理器的定址范圍,可以使用更大的內存。而對於VS這種並非內存敏感的程序,並不十分需要遷移到64bit下。
另外,還有一個歷史原因,就是微軟一直沒有完成64bit下的JIT調試器的EditandContinue功能,這是因為64bit的JIT是C++團隊做的,和原生CLR團隊的32bitJIT有很多不同。
如果微軟推出了64bit的VS,那麼調試的體驗會受到限制,這也是為什麼微軟一直以來沒有推出64bitVS的原因。
2. C++程序32位編譯成64位程序,有些項目無法設置為X64
試試先把各項目的 x64 刪除,然後再創建
3. vs2019win32項目轉成win64
vs2019win32項目轉成win64:在工程跡汪掘屬性設置中作如下修改:
1. 在「C/C++」——「預處理器」中姿核將WIN32改為_WIN64,並且放在最前面,這樣才確保鏈接的是64位的Windows SDK。
2. 在「鏈接器」——「高級」——「目標計算機」將「MachineX86(/陵褲MACHINE:X86)」改為「MachineX64 (/MACHINE:X64)」。
3.代碼中有些地方需要修改:
(1)'static_cast' : cannot convert from'void (__cdecl CWindowTip::* )(UINT)' to 'void (__cdecl CWnd::* )(UINT_PTR)' E:2015prog2-.cpp 128 1 AutoTargetDetection
4. 怎麼把vs2008創建的32位的程序改為64位的
點擊對應的項目,右鍵-》屬性中:選擇「生成」頁簽,「目標平台」選擇「X64」
5. 如何編譯64位dll程序,有幾種情況,在32位XP上用VC++6.0或者VS2010該怎麼編譯64位的dll。
在64位的操作系統上用vs軟體編譯的dll默認就是64位。
在32位XP上用VC++6.0編譯64位的dll,需要安裝sdk(最新版本是sdk2003),在開始菜單——sdk——open build environment window——windows server 2003 64-bit build environment——set win svr 2003 x64 build env進入命令行,從命令行調用msdev,將vc選項里的include和lib的第一個默認路徑設為sdk目錄下64位頭文件和庫的路徑,編譯出的dll似乎就是64位的了。這個是從網頁上看到的,沒實踐過。
在32位XP上使用vs2010就簡單多了,新建一個項目(解決方案),加入代碼,設置X64,編譯生成即可。
6. 將win32的程序編譯為x64,其中win32用到了kernel32.dll這樣的dll,請問在x64位中可以繼續使用嗎
kernel32.dll, user32.dll, netapi32.dll 等庫在 64 位 windows 系統、64 位應用程序中依然可以使用,這是因為針對 32 位程序和 64 位程序,windows 提供了兩個不同的版本,分別位於系統目錄 system32 和 syswow64 下面,雖然兩個目錄下的庫文件使用了相同的名字,但實際上是不一樣的。
7. 32位系統編譯的程序能在64位下運行嗎
在32位的系統不能運行64位的程序,在64位的系統上可以運行32位的程序。
在32位下開發編譯和在64位下開發編譯是沒有區清余別空早的,重點在於生成的時候的選項,生成什麼平台軟體。斗正雀是X86還是X64還是anycpu
8. 32位機能用64位編譯器編譯源程序嗎有64位的VS了么
32位系用64位,只有在夢里才可以,在64位系統下搞32位,那是客觀存在的。
9. 32位的電腦怎麼編譯64位程序
方法/步驟
1、VS2010新建的VC++項目默認的組件平台是32位。
10. 32位編譯器可以編64位程序嗎
VS不可以,不提供交叉編譯器
gcc可以
但是需要自行編譯(至少我不知道是否有人提供),把host設為i686-w64-mingw32
target設為x86_64-w64-mingw32 !