Visual Studio错误:LNK1104:无法打开文件'kernel32.lib' - 仅在WP8项目/ Win32版本中

时间:2014-01-10 23:37:08

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

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

今天,我从模板' Windows Phone Direct3D应用程序(仅限本机)'创建了新的解决方案。检查我是否在WP上正确支持我新创建的DLL。我尝试编译这个项目,首先没有任何更改或额外的引用 - 由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编译没有问题。这是正常的吗?

1 个答案:

答案 0 :(得分:9)

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

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

- kernel32.lib was in valid location
- all include and library directories was correct
- standard *.props files were attached to each project

然而,原因在于其他地方。

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

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

而不是

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

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