使用VS2015編寫驅動時出現的部分錯誤以及解決方法
前幾日在github上下載了一個Windows驅動的demo,原本想著直接下載下來開啟解決方案就可以用,沒想到一編譯,出現了奇奇怪怪的Error,部分Error網上也沒什麼好的解決辦法,對我這個從未深入玩過VS的人,VS的使用體驗實在是太糟糕了,以後不知道還有沒有機會繼續使用VS,但是還是決定記錄下來踩過的坑。
1、Error C1107 未能找到程式集“platform.winmd”: 請使用 /AI 或通過設定 LIBPATH 環境變數指定程式集搜尋路徑
通過微軟的錯誤幫助,發現問題出在了LIBPATH環境變數中,並且是using出了問題。
解決辦法:
① 解決方案資源管理器右鍵專案,點選屬性。
②配置屬性--C/C++--其他using指令--編輯,看一下到底是缺了什麼路徑
經過分析發現,在C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcpackages中,資料夾是空的,那麼肯定會報錯了。
出現資料夾為空的情況,是因為這個工程是下載的別人的,VS的安裝位置不一樣,因此只需要新增你安裝VS的路徑下的vcpackages就可以了。
我的VS安裝在E盤,因此只需新增E:\VS2015\VC\vcpackages,然後儲存,再次編譯就可以通過了。
2、WindowsApplicationForDrivers10.0未安裝,請安裝WindowsApplicationForDrivers10.0 tools後使用
出現此問題的原因是未安裝WDK10
解決辦法:
安裝WDK10即可。
WDK10:https://docs.microsoft.com/en-us/windows-hardware/drivers/download-the-wdk
安裝成功後選擇平臺工具集為WindowsApplicationForDrivers10.0即可。
3、LINK : fatal error LNK1181: 無法開啟輸入檔案“C:\Program Files (x86)\Windows Kits\10\lib\10.0.10240.0\km\x86\cfg_support_v1.lib
出現這個問題的原因是我們使用的Windows Kit版本是10.0.10240,其中缺少km資料夾
解決辦法:
進入資料夾C:\Program Files (x86)\Windows Kits\10\include,將高版本的資料夾下的km資料夾拷貝到我們使用的平臺所需要的版本的資料夾
相似的進入資料夾C:\Program Files (x86)\Windows Kits\10\Lib,執行上邊的一步,再次編譯問題解決。
4、regsvr32命令報錯:模組已載入,但對dllregisterServer的呼叫失敗,錯誤程式碼為0x80070005
將專案編譯好後生產DLL檔案,需要載入DLL檔案,出現失敗。出現此問題的原因是許可權不足,需要獲取管理員許可權執行regsvr32命令。
解決辦法:
① 使用管理員身份執行cmd命令列,執行regsvr32命令。
或者
② 將執行的regsvr32命令儲存在一個文字檔案中,然後將檔案字尾名改為.bat或者是.cmd,儲存後,右鍵"以管理員身份執行"。