vs qt rc.exe windows sdk version

問題描述:使用qt version 5.12.0(qt creator version 4.8.1) ,使用vs2015。

在新電腦使用qt編譯項目時。出現無法運行rc.exe。

原因,不同版本的vs 要求的windows sdk版本是不一樣的vs安裝過程中默認沒有安裝可選的windows sdk。最好是在安裝的時候就勾選好一個版本的sdk。

可以在vs的安裝過程中查看vs可選的windows sdk版本(或者windows sdk也可通過 控制面板->程序->程序和功能->visual studio 2015->更改->修改 中查看)。然後從https://developer.microsoft.com/zh-cn/windows/downloads/sdk-archive/ 下載到對應的一個版本安裝就行(windows sdk也可通過 控制面板->程序->程序和功能->visual studio 2015->更改->修改 安裝,但是這個過程比較慢)。

至此,那個rc.exe 的問題就解決了。

至於ucrtxxxx.lib(universal c runtime)或頭文件的問題,那應該是qt的配置的問題。因爲更改sdk。qt中的sdk參數是不會動的(qt只在安裝的時候獲取最新的sdk)所以需要手動更改qt中的sdk配置參數,

 

 

 

問題處理過程:

該問題在之前工作中就碰到過,當時的解決辦法是向網上說的直接拷貝rc.exe 到vs的目錄下,但是感覺這不是一個規範的操作。並且也碰到過所有程序安裝完就能正常跑的情況, 所以感覺應該是有什麼操作過程出了問題。

首先在網上的拷貝操作讓我感覺這個不是qt的問題,且查看一個qt工程中的 .qmake.stash ,Makefile ,Makefile.Debug 等文件,以及qt的配置中,都沒有找到rc.exe的身影,所以猜測這個問題應該是與vs有關係。

在 控制面板\程序\程序和功能 ,對vs進行修復,還是如此。感覺可能與其中vs相關的程序有關係,第一眼看到了microsoft visual C++ 2015-2019 Redistributable這個東西,可能(盲目瞎猜)有關係(使用vs開發的C++ release 程序 需要用這個東西,它主要是在windows/system32 和windows/SysWOW64中安裝msvcp140xxxx.dll庫)。然後卸載,重裝microsoft visual C++ 2015 Redistributable。還是如此,且打開了vs的一個實驗程序,編譯也沒有問題。

然後在程序和功能中看到了Windows software development kit字樣,看到已經安裝了10.0.17763 ,猜測可能與windows sdk有關係 ,因爲rc.exe就是windows sdk中的,且qt依賴windows sdk中的庫、頭文件、及cdb等工具。然後查看vs工程中是不是有修改sdk版本的,改成10.0.17763(這時候突然想起,qt中肯定一個地方是可以配置windows sdk版本的,確實是找到了)。出現了

這下就確定了,原來就是vs的原因。之前運行vs的工程沒有問題,是一直沒有注意 目標平臺版本 ,一直是默認的8.1。改成10.0.17763問題就出來了。

然後猜測可能是sdk出問題了,首先做的不是修復,而是下載一個更新的,10.0.19041.0(基於新的東西肯定修復的bug更多的觀點)。然後還是出現“無法運行rc.exe”。

猜測,難道是vs出問題了。控制面板\程序\程序和功能 vs,查看vs中是否有遺漏的東西沒有安裝好,又選擇更改。然後進入我眼簾的是圈起來的部分,因看字 與c++最接近了,試一下,勾上,更新(要吐槽一下,vs的每一詞這樣的操作都是要一個小時左右,太坑)

一個小時過後,還是"無法運行rc.exe"。但是使用8.1版 sdk的還是能正常運行

然後猜測會不會是10.0.19041.0 不支持,且10.0.17763壞掉了。然後對10.0.17763進行一個修復,同時10.0.19041.0進行卸載,
再運行vs工程,出現了下面這個問題。

網上再找,說是sdk壞掉了。捨不得卸載。可能是我修復的方式出問題了,然後猜測會不會在vs安裝的時候有sdk選項,又重新進一遍。然後發現了下面這個。對比一下我現有的版本10.0.17763,猜測,難道vs 2015 對 windows sdk的版本有要求?果斷選了那個從名字中工具多一個的那個,且是裏面最新的。

一個小時後,配置vs的工程,選擇 目標工作平臺 10.0.14393 。啊,清爽了。好了。rc.exe問題終於消失了。qt上測試,也是如此。

然後繼續,配置vs工程 目標工作平臺 10.0.17763,還是出現bemapiset.h的問題。又想着再試着安裝一下10.0.19041.0。5分鐘過後,10.0.19041.0的配置,也沒有出現 “無法運行rc.exe”的錯誤。猜測10.0.17763 應該是被玩壞了,然後卸載了。

爲了排查清楚vs是否與sdk版本有關係,然後卸載 windows sdk 10.0.14393。選用10.0.19041.0,問題果然又出現了,vs qt中都出現了。

然後在網上搜索是否vs的對windows sdk版本有要求。沒有搜到有用信息,但是發現了windows sdk的下載路徑。順便將10.0.14393下載過來,安裝,測試。運行成功。看來vs安裝中的那個tools是沒有用的。

同時單獨測試10.0.10586,居然也能運行成功。10.0.10586 搭配10.0.19041.0。兩者都能運行成功,卸載10.0.10586只剩下10.0.19041.0又失敗。至此,確定了,vs2015對 windows sdk版本是有要求的。

然後再網上找,說是sdk出問題了

 

 

 

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