64位编译器编译的指针是8bits 32位编译器编译的指针为4bits 如果一个程序里面同时用到了64位和32位的库(比如64位的Qt和32位编译器编译的boost cl.exe貌似默认就是32位 但好像没和64位qt起冲突) 它俩会不会不兼容? 求大神给我讲讲 64位 32位 除了能取更多的内存地址 还有什么要注意的。。。
高洛峰2017-04-17 13:01:07
32位元的函式庫向上相容應該沒什麼問題吧
64位元向下相容基本上很難
幾點要注意的
第一移動指標指標長度要sizeof 這樣重新編譯就不需要改動了
第二其實和1很像long在64 相當於32的long long 64位下long賦值給int就掛了越界還有指針也不要賦給整形也會掛
第三彙編代碼如果你嵌入了彙編可能無法相互相容
這樣說吧 最好是 你得庫可以支援 64和 32的編譯
ringa_lee2017-04-17 13:01:07
一般來說32位元的函式庫可以在64位元上使用(有例外情況,比如說將指標位址儲存為數字型別的時候,如果用int型在64位元上就會溢位),但是64位元的庫無法在32位上使用
巴扎黑2017-04-17 13:01:07
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編譯的?這是不可能混用的