【问题标题】:Visual Studio error: LNK1104: cannot open file 'kernel32.lib' - only in WP8 projects / Win32 buildsVisual Studio 错误:LNK1104:无法打开文件 'kernel32.lib' - 仅在 WP8 项目/Win32 版本中
【发布时间】:2014-01-30 03:26:45
【问题描述】:

我最近遇到了这个问题(几天前一切正常):Visual Studio 2012 开始拒绝构建原生 WP8 项目。

今天,我从模板“Windows Phone Direct3D 应用程序(仅限本机)”创建了新的解决方案,以检查我新创建的 DLL 是否在 WP 上得到正确支持。我尝试编译这个项目,首先没有任何更改或额外的引用 - 由 VS 生成的纯代码。但是,它因给定错误而失败。 我很清楚这是什么意思,可能的原因是什么,但我不明白,但是,在这种情况下它是从哪里来的。 奇怪的事情:这只发生在“Win32”配置中,ARM 编译正常:

1>------ Build started: Project: PhoneDirect3DApp, Configuration: Debug ARM ------
.......

Build Summary
-------------
00:11.742 - Success - Debug ARM - PhoneDirect3DApp\PhoneDirect3DApp.vcxproj

但 Win32 没有:

1>------ Build started: Project: PhoneDirect3DApp, Configuration: Debug Win32 ------
.......
1>LINK : fatal error LNK1104: cannot open file 'kernel32.lib'

Build Summary
-------------
00:09.725 - Failed  - Debug Win32 - PhoneDirect3DApp\PhoneDirect3DApp.vcxproj

我的标准(本机 C++/Win32)项目也可以按预期工作(在 Win32 和 x64 平台目标中)。

项目配置:(在两个平台上)

链接器::输入:

d3d11.lib;%(AdditionalDependencies)

链接器::忽略:

ole32.lib;%(IgnoreSpecificDefaultLibraries)

VC++ 目录:

Microsoft.ARM.Cpp.User:

$(WP80ToolSetPath)lib\arm;$(WindowsSDK_LibraryPath_ARM);

Microsoft.Win32.Cpp.User:

$(VCInstallDir)lib;$(VCInstallDir)atlmfc\lib;$(WP80ToolSetPath)lib\x86;$(WindowsSDK_LibraryPath_x86)

任何想法还有什么可能是错误的或配置不正确?我的想法已经用完了,我以前从未见过这样的东西。

顺便说一句,我注意到另一个变化:之前我在 ARM 配置中尝试编译 WP8 项目时,总是出现错误,说“不支持在桌面上构建 ARM 应用程序”(或类似的东西) .现在 ARM 编译没有问题。正常吗?

【问题讨论】:

  • I've received the same link error. 也许那里的一些答案可能会有所帮助。
  • 它说找不到文件,所以检查它是否还在。 C:\Program Files (x86)\Windows Kits\8.0\Lib\win8\um\x86\kernel32.lib
  • 已检查。正如我所说,我已经执行了所有基本检查 - 没有结果。但是,我开始检查 VS 构建环境使用的内部宏,似乎有些东西可能被破坏了。如果有可行的解决方案,我会提供反馈。
  • 查看安迪·拉什顿的答案以获取解释stackoverflow.com/questions/13426740/…

标签: c++ visual-studio-2012 windows-phone-8 linker-errors windows-phone-8-sdk


【解决方案1】:

最后,我找到了问题的原因:我怀疑是内部 Visual Studio 配置被破坏了。

我完成了所有标准步骤,但可以在 LNK1104 的情况下执行:

- kernel32.lib 位于有效位置 - 所有包含和库目录都是正确的 - 标准 *.props 文件附加到每个项目

但是,原因在别处。

所有路径均使用标准宏定义。其中之一是 $(WindowsSDK80Path),用于构建包含/库路径。在我的系统上,这个宏被定义为

C:\Program Files (x86)\Windows Phone Kits\8.0

而不是

C:\Program Files (x86)\Windows Kits\8.0

就是这样。我不知道这个问题是何时或如何出现的。通过原始安装程序修复 Visual Studio 足以解决所有问题。所有项目现在编译没有任何问题。

【讨论】:

    猜你喜欢
    • 2015-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-23
    • 2018-10-24
    • 2011-11-19
    • 1970-01-01
    相关资源
    最近更新 更多