c++ - 32位编译器编译的库和64位编译器编译的库相互兼容吗?
天蓬老师
天蓬老师 2017-04-17 12:59:07
0
3
1215

64位编译器编译的指针是8bits 32位编译器编译的指针为4bits 如果一个程序里面同时用到了64位和32位的库(比如64位的Qt和32位编译器编译的boost cl.exe貌似默认就是32位 但好像没和64位qt起冲突) 它俩会不会不兼容? 求大神给我讲讲 64位 32位 除了能取更多的内存地址 还有什么要注意的。。。

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(3)
小葫芦

32位元的函式庫向上相容應該沒什麼問題吧
64位元向下相容基本上很難
幾點要注意的
第一移動指標指標長度要sizeof 這樣重新編譯就不需要改動了
第二其實和1很像long在64 相當於32的long long 64位下long賦值給int就掛了越界還有指針也不要賦給整形也會掛
第三彙編代碼如果你嵌入了彙編可能無法相互相容

這樣說吧 最好是 你得庫可以支援 64和 32的編譯

左手右手慢动作

一般來說32位元的函式庫可以在64位元上使用(有例外情況,比如說將指標位址儲存為數字型別的時候,如果用int型在64位元上就會溢位),但是64位元的庫無法在32位上使用

巴扎黑

32的流程只能載入32位元的函式庫,64位元的行程只能載入64位元的函式庫。 32位元通常是指標的長度為4個位元組,而不是4bits,cpu能夠一條指令寫4個位元組;64位元的,cpu可以一條指令搞定8個位元組。在x86系列(包含x86_64)的cpu的Windows上,32位元的行程可以跑在64位元的作業系統上,64位元的只能在64位元的作業系統上。
你說的64的qt和32位元編譯的boost,其中64位元是不是指的是qt creator?
你確定你使用的qt函式庫是64位元的,boost是x86編譯的?這是不可能混用的

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!