自从我在Visual C ++ 2010 Express编译器上安装用于64位编程的.NET Framework SDK以来,我一直在收到此错误。由于我遇到的这个错误,我根本无法编译一个简单的程序。我的平台是x86。如果它有帮助,这是一个快照:
我不知道还有什么可说的。我昨天刚下载了这个编译器,它运行正常。我想从32位编程升级到64位,所以我可以使用Assembly,所以我下载了这个SDK。我在谷歌搜索,甚至在Stackoverflow上搜索。谷歌没有多大帮助,但是我找到了一篇与我的相似的帖子here,但答案并没有太多正义。有谁知道为什么会出现这个错误以及如何摆脱它?
答案 0 :(得分:18)
将平台工具集更改为:项目属性下的“Windows7.1SDK” - >配置属性 - >一般
答案 1 :(得分:17)
检查VC ++目录,在VS 2010中可以在项目属性中找到它们。检查目录列表中是否包含$(WindowsSdkDir)\lib
,如果没有,请手动添加。如果您正在为X64平台构建,则应从“Platform”ComboBox中选择X64,并确保$(WindowsSdkDir)\lib\x64
包含在目录列表中。
答案 2 :(得分:5)
确保您拥有VC ++目录(右键单击项目,单击属性页),
答案 3 :(得分:5)
仅限命令行(即 - makefile)用户:
你(像我一样)可能会将你的makefile“调整”到上面的#1,通过以下方式:
MS_SDK_BASE_DOS := C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A
ENV_SET := LIB="$(MS_SDK_BASE_DOS)\Lib\x64"
但是,现在,您需要将调整更改为上面的#2,如下所示:
MS_SDK_BASE_DOS := C:\Program Files\Microsoft SDKs\Windows\v7.1
(不要错过“v7.0A”到“v7.1”的变化。)
答案 4 :(得分:3)
在项目中添加WindowsSdks的lib路径 - >属性 - >配置属性 - > VC ++目录 - > 图书馆目录。
我添加了以下路径并且错误变为::
C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.1A \ Lib;
我的系统是 Win-7,64位,VS 2013,.net framework 4.5
答案 5 :(得分:2)
我遇到了类似的错误,当我检查项目属性中的“链接器 - >输入 - >附加依赖关系”列表时,问题就停止了。我错过了一个半冒号“;”就在“%(AdditionalDependencies)”之前。 我也有两次相同的条目。您应该分别编辑此列表以进行调试和发布。
答案 6 :(得分:1)
我在使用Visual Studio 2017的Windows 10上遇到了不同的问题,但效果相同。我认为我的问题归结为VS被安装到“C:\”以外的驱动器上。我通过重新安装Windows 10 SDK
解决了这个问题首先我必须卸载Windows SDK(安装了两个版本)。然后运行可执行文件。一旦安装,运行visual studio,它工作正常。
答案 7 :(得分:0)
gero的解决方案对我有用。
在Visual Studios 2012中,请执行以下步骤
- 转到解决方案资源管理器
- 右键单击您的项目
- 转到属性
- 配置属性 - >一般
- 平台工具集 - > 更改为Windows7.1SDK
答案 8 :(得分:0)
如果上述解决方案无效,请检查您是否在“属性 - > VC ++目录 - >图书馆目录”中有 $(LibraryPath)。如果您错过了它,请尝试添加它。
答案 9 :(得分:0)
操作系统:Win10,Visual Studio 2015
解决方案: 转到控制面板--->卸载程序--- MSvisual studio ---->改变---->组织=修复
并修复它。 请注意,您必须连接到互联网才能修复完毕。
祝你好运。答案 10 :(得分:0)
今天在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
。具体来说,对于VS2017的命令提示符,此批处理文件中设置(我的目录实际上有4个不同的文件):
%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvars32.bat"
因为我不愿意更改其中一个“已安装”的批处理文件...甚至更多,因为该批处理文件调用另一个批处理文件:
@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 C ++ Win32控制台应用程序并尝试编译之后,这在Visual Studio 2017 Enterprise 2017版本15.1(26403.0)中也是可重现的。
实际上,除非创建了空白的应用程序,否则默认模板还会包含对<SDKDDKVer.h>
的引用,并且我会收到此额外错误:Error (active) E1696 cannot open source file "SDKDDKVer.h"
。所以我created an empty C++ project。
答案 11 :(得分:0)
在 Visual Studio 2017 中,我转到项目属性 - &gt; 配置属性 - &gt; 常规,已选择所有平台 (1),然后选择 Windows SDK下的(2)下拉列表版本,并从 10.0.14393.0 更新为已安装(3)的版本。对我来说,那是 10.0.15063.0。
其他详细信息: 这更正了我的错误,因为 Windows SDK版本有助于VS选择正确的路径。 VC ++目录 - &gt;图书馆目录 - &gt; 修改 - &gt; 宏 - &gt;显示宏 $(WindowsSDK_LibraryPath_x86)的路径上面选择了版本号。
答案 12 :(得分:0)
我刚刚遇到并自己解决了这个问题。我的问题有点不同。我在Windows 10上使用Visual Studio。创建项目时,Target Platform Version
被自动设置为10.0.15063.0
。但是此版本的SDK没有kernel32.lib
,其他必需的头文件和lib文件也没有。因此,我将Target Platform Version
修改为8.1
。而且有效。
环境:
解决方案:
Property Page
; General
页; Target Platform Version
修改为所需的目标平台(例如8.1
)。答案 13 :(得分:0)
来自 SunsetQuest 的帖子帮助我指出了一个简单的错误。我正在用 VS2019 编译 OpenCV 4.5.1。我未能在属性页上正确设置 Platform: x64。之后,我必须添加 msvcprtd.lib、ucrtd.lib 的路径和 x64\kernel.lib 的路径。谢谢