LNK1104:无法打开文件'kernel32.lib'

时间:2010-10-13 18:38:12

标签: visual-studio-2008 linker-errors

我安装了VS2010,但发现intellisense无法正常工作。我在网上看到,发现我不是唯一一个有这个问题的人。所以,我安装了VS2008,一切都很好。然后我决定清理我的电脑并删除VS2010并立即开始在我的程序(新旧)上出现此错误。即使是一个有一个cout命令的简单测试程序。我试过修复VS2008但是没有用,所以我试图卸载然后重新安装,但我仍然遇到同样的问题。

我已经在网上查找了这个问题,虽然我发现很多其他人遇到这个问题却不一样。他们遇到了其他外部引用的问题,而不是像kernel32和lib32等那样自动包含的引用。

我也试过了一些解决方案,这些解决方案适用于某些人的其他引用,我将路径(有和没有引号)包含在我的kernel32目录中,但我仍然遇到同样的问题,或者在某些情况下我会得到

LNK1104:无法打开文件'C:\ WINDOWS \ system32.obj'

在链接器配置中有和没有引号。

有人可以帮忙吗?

4 个答案:

答案 0 :(得分:1)

我认为你在这里寻找的选项是-MT而不是-MD。我遇到了同样的问题。您会注意到,当您使用此选项时,DLL的大小要大得多(包括依赖项)

答案 1 :(得分:0)

  

我将路径(有和没有引号)包含在我的kernel32目录

看起来你指的是C:\Windows\System32这可能是DLL的位置,但这不是.lib文件所在的位置。

在VS 2010中,它可能就像:

C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib

我没有准备好访问VS2008来说明默认情况下为该产品安装kernel32.lib的位置。

答案 2 :(得分:0)

如果有人再次提出这个问题,我找到了适合我的解决方案。

在我的案例中,来自Win 7和/或防病毒排序软件的UAC拒绝访问kernel32.lib。在以管理员身份启动VS 2008并为项目文件夹停用病毒扫描后,它对我有效。

答案 3 :(得分:0)

我遇到了这个问题并且解决了它。我安装了SDK,但VCVARS32.bat找不到SDK,因此默认为不存在的路径(安装了VS2008)。我通过修改VCVARS32.bat(“C:\ Program Files(x86)\ Microsoft Visual Studio 9.0 \ Common7 \ Tools \ vsvars32.bat”强制执行此操作,请参阅第13行):

11: @call :GetWindowsSdkDir
12:
*13: @SET WindowsSdkDir=C:\Program Files\Microsoft SDKs\Windows\v6.0A\
14:
15: @if not "%WindowsSdkDir%" == "" (

我必须这样做,因为我安装了VS2008,VS2010和VS2012,因为我们大多数人可能需要支持跨多个团队的多个项目,所以更新任何全局的东西,比如实际的环境路径,可能会导致混合SDK版本。