模塊計算機類型“X86”與目標計算機類型“X64”衝突的原因分析與解決方案

這個問題的對立問題就是“模塊計算機類型“X64”與目標計算機類型“X86”衝突”,這個問題的解決方法文章後面再說

這兩個問題看起來很像,解決方法卻大相徑庭,很多博客都把兩者混淆,解決不了問題

原因分析

首先來看題目中這個問題出現的原因,模塊計算機類型“X86”是指計算機當前調用的庫(lib或dll文件)的位數是32位,目標計算機類型“X64”是指當前的編譯平臺環境爲64位,兩者不相符,故衝突

模塊計算機類型“X86”與目標計算機類型“X64”衝突的解決方法

這個問題一般出現在想生成64位解決方案時,因爲平臺選的64位,很明顯是想得到64位解決方案。網上很多博主給出的解決方案是調整VS平臺環境爲64位,我看到時的內心就是:???excuse me?? ,因爲報錯已經說了目標計算機類型“X64”,很明顯平臺是64位的沒有問題,不用調整,除非想生成的是32位解決方案,可以改爲win32環境。

平臺沒有問題,剩下就是模塊計算機類型“X86”的問題,如果在VS上運行,可以具體看下報錯的文件名字,比如我在構建Halide時報錯,出錯的文件是“llvmObject.lib”文件,就是這個文件是32位的,llvm我是在cmd編譯源碼安裝的,所以就是我在編譯llvm時系統默認生成的是32位庫文件,導致在llvm基礎上編譯Halide時報錯。

找到原因,就可以對症解決了,重新編譯llvm生成64位庫文件,cmd中,如果用 

cmake -G "Visual Studio 14 Win64"

編譯時,認真看的話,會發現編譯最開始有句話提示,大概意思就是“由於未選擇64位還是32位,系統將默認編譯32位,如果想編譯64位請在cmd 命令行中添加 -Thost=x64”,按照這個提示,這次用下面這句編譯

cmake -Thost=x64 -G "Visual Studio 14 Win64"

可以看到這次調用就是amd64文件夾內的內容,生成64位庫文件,問題就得到解決!


模塊計算機類型“X64”與目標計算機類型“X86”衝突的解決方法

這個問題,相對容易解決,庫沒有問題,把平臺改爲x64就好,這個解決方案網上很多大概就是:

1、“鏈接器-》高級-》目標計算機”設置爲"MachineX64 (/MACHINE:X64)"

2、“鏈接器-》命令行-》其他選項”設置爲" /machine:X64 /debug "

3、“生成-》配置管理器-》活動解決方案平臺”設置爲" X64 ",如果沒有就新建。

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