今天在Visual Studio 2017中,我遇到了同樣的問題。
在我的情況原因竟然是NETFXSDKDir(NETFXSDKDir=C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1
)中的一個糟糕的環境設置。它需要改爲NETFXSDKDir=C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x86
。具體而言,如在此批處理文件(我目錄實際上有4個不同的文件)設置的命令提示符下VS2017:
%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars32.bat"
,因爲我不願意改變「爲安裝」的批處理文件&hellip之一;更因爲該批處理文件調用另一個又一:
@call "%~dp0vcvarsall.bat" x86 %*
...而不是爲我具體的C++命令行應用程序,我只是簡單地添加了顯式路徑文本:;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x86
共計字符串「庫目錄」像這個:$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.10240.0\um\x86
。 (右鍵點擊項目,屬性→配置屬性→ VC++目錄→庫目錄。)這解決了我的「致命錯誤LNK1104:無法打開文件'kernel32.lib'」錯誤。我在this GitHub issue發現提示。
注意,即使在成功「修復」安裝後,這在Visual Studio 2017企業版2017版本15.1(26403.0)中也是可重現的…當創建一個新的Visual C++ Win32控制檯應用程序並嘗試編譯時。
實際上,除非創建了空白應用程序,否則默認模板還包含對<SDKDDKVer.h>
的引用,並且由於我得到此附加錯誤:Error (active) E1696 cannot open source file "SDKDDKVer.h"
。所以我created an empty C++ project。
我試試這個:首先搜索你的Program Files目錄,看看kernel32.lib的安裝位置,然後檢查項目的VC++目錄屬性頁面列出的庫目錄,並驗證路徑是否正確。 – 2013-02-24 15:49:44
這是由於我的VS2017安裝的多個SDK安裝之間的路徑混淆引發的。我使用VS2017安裝程序刪除所有Win10 SDK和工具集(140和141),更新了我的安裝,然後通過VS2017安裝程序重新安裝它們。之後,問題解決了。 – 2017-05-18 01:05:17