【问题标题】:visual studio 2010 express + win sdk = cannot open input file 'kernel32.lib'visual studio 2010 express + win sdk = 无法打开输入文件'kernel32.lib'
【发布时间】:2012-04-06 23:31:18
【问题描述】:

我曾经使用 VS2008 express 和 win SDK 为 x64 编译。最近重建了我的机器(升级到 64 位 Windows 7)并安装了最新的 express。遵循相同的过程以允许 x64 目标和我的源不再链接。 无论我做什么,我总是得到:

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

足够有趣的 32 位编译工作正常。

这是一个众所周知的问题吗? Google 没有给我任何解决方法的线索,只是提到了几次相同的问题,但没有解决方案。

是否可以使用带有 win 7 SDK 的 VS 2010 来定位 64 位?

谢谢 帕维尔

【问题讨论】:

    标签: windows visual-c++ 64-bit linker-errors


    【解决方案1】:

    如果上述解决方案均无效。停下来做一次健全性检查。我使用错误的 -G 配置字符串被烧毁了,它给了我这个误导性的错误。

    首先,从 VS 命令提示符而不是常规命令提示符运行。你可以在 Start Menu -> Visual Studio 2015 -> MSBuild Command Prompt for VS2015

    这会设置 VS 工具等的所有正确路径。

    现在看看 cmake 提供了哪些生成器...

    cmake -help

    ...<snip>... The following generators are available on this platform: Visual Studio 15 [arch] = Generates Visual Studio 15 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files. Optional [arch] can be "Win64" or "ARM". Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files. Optional [arch] can be "Win64" or "IA64". ...

    然后选择适当的字符串添加拱门。

    mkdir _build cd _build cmake .. -G "Visual Studio 15 Win64"

    在子目录中运行 cmake 可以更轻松地进行“清理”,因为您可以删除该目录中的所有内容。

    我升级到 Visual Studio 15 但没有注意并试图为 2012 年生成。

    【讨论】:

      【解决方案2】:

      FWIW,当整个 v8.1 SDK 安装(文件 + reg 密钥)退出时,我在 Visual Studio 2013 上遇到了同样的问题,这可能是由安装 Emborlandero RAD Studio 引起的。

      设置 WindowsSdkDir 环境变量没有任何效果,因为 Studio 本身(devenv.exe,通过 Process Explorer 检查环境)和从 vcvarsall.bat 调用的批处理文件调用的批处理文件有效地删除了该变量,因为它们不能找不到 v8.1 SDK。

      Visual Studio 不允许以机器范围的方式配置特定于机器的目录(将机器依赖项放入每个项目文件的建议是荒谬的,令人难以置信)并重新安装 v8.1 SDK不可能及时。同时让 Studio 再次工作的快速解决方法是在

      下添加字符串值InstallationFolder
      Software/Microsoft/Microsoft SDKs/Windows/v8.1/
      

      与 v8.0 表亲的内容相同。这是在HKLM/Wow6432Node 下,但普通的HKLMHKCU 应该也可以。

      这让 Studio 立即再次工作,甚至无需重新启动。

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题,这里的答案对我有帮助,但我必须做更多的事情。

        某些东西损坏了我的 Windows SDK 安装,所以我丢失了所有进入 C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\ 的 .lib 文件(里面的 x64 文件夹没问题)。所以我按照here 的说法重新安装了它。我可以将 Platform Toolset 设置为 Windows7.1SDK(在 VS2010 和 VS2013 中)。

        这是因为平台工具集更改了 Visual Studio 中的 $(WindowsSdkDir) 路径(保存的路径在系统注册表中),如果未找到 Kernel32.lib,该路径会被破坏。

        【讨论】:

        • 感谢@Matthieu 的编辑。我尝试过的其他方法是安装 VS2010 Express,这样我就可以将 Platform Toolset 设置为 VS100 而不是 Windows7.1SDK——这也对我有用。我这样做是因为我团队中的其他人正在使用此设置,并且我们希望避免以后发生冲突。
        【解决方案4】:

        最终解决方案非常简单。诀窍是让 VS 赢得在我的情况下由于某种原因不正确的 SDK。 Project Properties -&gt; VC++ Directories -&gt; Library Directories 应该指向 C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib\x64

        【讨论】:

        • 你是我现在世界上最喜欢的人。 :-)
        【解决方案5】:

        我发现的其他东西也很简单,就是转到项目属性->常规并将平台工具集设置为 Windows7.1SDK。想知道为什么会这样......

        【讨论】:

        • 我在常规下看不到“平台工具集” - 我只看到“输出目录”、“中间目录”、“配置类型”、“公共语言运行时支持”和“构建日志文件” ”。但是帕维尔的回答对我有用。
        • 从 VS 2013 社区升级到 2017 社区时,此答案对我有用
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-23
        • 2015-01-06
        • 2015-03-02
        • 2014-01-30
        • 1970-01-01
        • 2013-04-30
        相关资源
        最近更新 更多