2

我在 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 PATH NOT FOUND 以及从 win8.0 sdk 读取的几次成功(应该没问题,但结果是一样的,我需要它从 V7.0 读取) 1A SDK 文件夹...)

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

谢谢。

4

1 回答 1

2

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

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

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

注意 $(LibraryPath) 值将包括额外的值,例如从父母那里继承的,据我所知,这是一个详细的选项。我的文件夹项目包含一个名为“ lib ”的文件夹,这就是为什么我在分号之前有第一个值的原因。

我还使用其他常用选项来指定库目录值:

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

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

链接到 Visual Studio 2017 库目录配置的图像

于 2019-02-15T18:55:42.423 回答