错误LNK1181:无法打开输入文件'kernel32.lib'

时间:2013-10-05 14:27:13

标签: c++ linker

我在VS 2012上有一个项目。最新的SDK安装在WIN 8 x64计算机上,该项目的目标是WIn32。

我在Debug中有一个干净的构建,但是当我去发布时,我得到了1181 LNK错误 - 无法打开输入文件kernel32.lib。

我在计算机上有多个位置的文件,在VC目录中有$(WindowsSdkDir_71A)lib和$(WindowsSdkDir)\ lib。

使用进程监视器我试图重建并查看devenv.exe在哪里查找文件

**更新: 在调试中,它看起来在正确的位置。 在发布中它不寻找sdk, 但我明白这一点:

Y:\ MyProjectFofler \ $(LibraryPath)\ kernel32.lib未找到路径 还有一些来自win8.0 sdk的成功读取(应该没问题,但结果是一样的,我需要它从V7.1A SDK文件夹中读取...)

这个错误的解决方案是什么,可能是什么?

感谢。

1 个答案:

答案 0 :(得分:0)

我使用Visual Studio 2017遇到了这个问题。我试图获取Visual Studio项目配置以引用我想要的外部库.lib文件。当我删除对 system 库的任何引用时,我设法触发了该错误。后来我发现可以通过包含它们的宏值之一来纠正此问题(尽管您可以指定绝对的直接路径,但这可能不是最佳的编码约定,并且容易发脆)。

在Visual Studio项目上,右键单击“解决方案资源管理器”面板中的项目项(不是最上面的项目“解决方案本身”),然后选择“属性”。从那里执行以下操作:

VC ++目录->库目录 $(ProjectDir)lib; $(LibraryPath)

请注意,$(LibraryPath)值将包含额外的值,例如从父级继承的值,从我可以看出这是一个冗长的选项。我的文件夹项目包含一个名为“ lib ”的文件夹,这就是为什么我在分号之前拥有第一个值的原因。

我还使用了其他一些常用选项来指定“库目录”值:

$(VC_LibraryPath_x86)
$(WindowsSDK_LibraryPath_x86)
$(NETFXKitsDir)Lib\um\x86

如果您查看 VC ++目录->库目录部分,则可以单击输入行并选择“ Edit ”,然后可以观看实时预览。将评估和解析哪些宏值。如果您需要其他或更专业的值,请点击按钮以查找更多选项。

Link to image of Visual Studio 2017 Library Directories configuration