1. 程式人生 > >windows 系統下找不到kernel32.lib和windows.h等問題

windows 系統下找不到kernel32.lib和windows.h等問題

windows 系統下找不到kernel32.libwindows.h等問題

因為專案中一個硬體驅動只支援windows7,所以找了一個硬碟重灌系統(window 7 64位官方純淨版)。裝完之後又安裝了VS2013,新建專案直接報錯,找不到kernel32.lib,打不開windows.h等error,我感覺莫名奇妙,之前出現這種情況是因為裝了多個版本VS才會出現,為什麼我新系統也出現,真的很奇怪。因為需要用到VS+QT,所有緊接著安裝了QT5.8,裝好QT之後發現他喵的QT也出錯,找不到shell32.lib。我用了很久的windows10,也用了一段Ubuntu,都沒有遇到過安裝軟體之後,系統庫都配置不好的情況。為了徹底理解windows上的系統庫和環境變數的工作原理,查了很多的資料。最後終於解決了問題,並加深了對VS和配置的理解。

首先了解一下Microsoft Windows SDK維基百科 介紹了Windows SDK版本變遷和主要特性,主要理解不同作業系統對應不同版本的SDK,也就是為什麼後面我們要引用C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib這個路徑,這裡面的v7.1A代表了windows 7的最後一個版本

系統環境變數:

環境變數是在作業系統中一個具有特定名字的物件,它包含了一個或者多個應用程式所將使用到的資訊。例如Windows和DOS作業系統中的path環境變數,當要求系統執行一個程式而沒有告訴它程式所在的完整路徑時,系統除了在當前目錄下面尋找此程式外,還應到path中指定的路徑去找。使用者通過設定環境變數,來更好的執行程序。

“Path”,增加新的目錄時注意要使用英文分號將路徑隔開。

新增新的變數,在Path中引用格式為%<變數名>%

cmd下的環境變數設定

所有的在cmd命令列下對環境變數的修改只對當前視窗有效,不是永久性的修改。也就是說當關閉此cmd命令列視窗後,將不再起作用。永久性修改環境變數的方法有兩種:一種是直接修改登錄檔(此種方法目前沒試驗過),另一種是通過我的電腦-〉屬性-〉高階,來設定系統的環境變數

Visual Studio配置

部落格詳解

  • 可執行目錄:可執行目錄指向包含可執行檔案的目錄,通常是名字叫bin的資料夾,存放了.exe、.dll檔案,對應這環境變數中的PATH

  • 包含檔案:包含檔案對應了系統環境的INCLUDE變數

  • 引用目錄:引用檔案目錄則對應LIBPATH目錄

  • 庫檔案目錄:庫檔案目錄對應LIB環境變數

在系統環境變數中沒有PATH、LIB LIBPATH INCLUDE的條件下,那麼Visual Studio將自動轉至系統環境變數path逐一搜索該變數中所包含的目錄,以上就是VS在沒有任何輔助工具的條件下會進行的一系列的搜尋目錄處理。

Qt creator無法開啟檔案 “kernel32.lib" or"shell32.lib"等等問題

於此問題同時出現的應該是Visual studio專案找不到“kernel32.lib",都是因為系統環境變數中沒有包含

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\include

本人出現此問題時的系統情況為:windows 7 x64,VS2013,Qt5

參考連結

原因是qt使用的本地編譯連線工具cl.exe(MSVC編譯器)找不到windows sdk的lib檔案導致

點選Qt creator左側導航欄中 專案 配置管理,找到構建環境,點選詳情,發現qt使用了系統環境變數。

找到lib變數,將C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib路徑新增到lib變數中,再次執行,錯誤消失。