問題:解決 CMake 3.2x 版本在 [Configure] Visual Studio 201x - x64 時出現錯誤...LINK : fatal error LNK1104: 無法開啟檔案 'kernel32.lib' 的問題...如下圖



環境
(1).Windows 10/11
(2).CMake 3.21.3
(3).Microsoft Visual Studio Community 2017/2019 


解決步驟
(1).本錯誤問題發生在 CMake 中,其實在 Visual Studio 201x 中若編譯時選 x86 是不會有問題的,而若是選 x64 時,也會讓你看到堆傻眼的錯誤...這也是我覺得問題不在 軟體,而是在某些環境設定上,但去網站搜尋時,也只會讓你看到一堆不相干或是無法解決問題的資訊...
(2).解決方法很簡單,只要將 %HOMEPATH%\AppData\Local\Microsoft\MSBuild\v4.0 目錄下的三個檔案(如下圖)都刪除掉(好像可以使用 dotdev.exe 指令來刪除?!),即可恢復 Visual Studio 系統預設的狀態而讓編譯動作不產生錯誤...
其中的 Microsoft.Cpp.x64.user.props 檔案,預設內容如下圖(如果有改過就不會一樣了)...



說明:其實這就表示,當使用 cl.exe 時,它會去查看 MSBuild 目錄的設定而去引用之,如果之前有安裝不同版本的 Visual Studio 或是有更動過它的設定(可能我之前有手動改過!!),它就會讓你之後的 C++編譯 或是 CMake 產生LNK1104錯誤了...


心得
(1).就是這個簡單的錯誤問題但它困擾了我很久(超過一年,其間也讓我一些工作不順遂),一直搜尋不到想要的答案(也問了一堆人),但在今天的隅然機會中將其解決了,真是大快人心呀!!
(2).其實呀!!實在不想再抱怨微軟的軟體安裝/移除作業,如果能夠確實地刪光相對應的檔案或目錄,或是在新軟體執行某項功能時,能對一些 設定值 執行檢查,是不是就能讓 User 少些困擾及阻礙呢?!

留言