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

Visual Studio error: LNK1104: cannot open file 'kernel32.lib' - only in WP8 projects / Win32 builds

本文关键字:WP8 仅在 项目 版本 Win32 lib kernel32 文件 Studio Visual 错误      更新时间:2023-10-16

我最近遇到了这个问题(几天前一切都很好):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 - PhoneDirect3DAppPhoneDirect3DApp.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 - PhoneDirect3DAppPhoneDirect3DApp.vcxproj

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

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

链接器::输入:

d3d11.lib;%(AdditionalDependencies)

链接器::忽略:

ole32.lib;%(IgnoreSpecificDefaultLibraries)

VC++目录:

Microsoft.ARM.Cpp.User:

$(WP80ToolSetPath)libarm;$(WindowsSDK_LibraryPath_ARM);

Microsoft.Win32.Cpp.User:

$(VCInstallDir)lib;$(VCInstallDir)atlmfclib;$(WP80ToolSetPath)libx86;$(WindowsSDK_LibraryPath_x86)

还有什么可能是错误的或配置错误的想法吗?我没什么想法了,我以前从未见过这样的事情。

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

最后,我找到了问题的原因:正如我所怀疑的,Visual Studio的内部配置已经损坏。

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

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

然而,原因在其他地方。

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

C:Program Files (x86)Windows Phone Kits8.0

而不是

C:Program Files (x86)Windows Kits8.0

就这样。我不知道这个问题是什么时候或如何出现的。通过原始安装程序进行Visual Studio修复是修复所有问题的足够方法。所有项目现在都可以编译,没有任何问题。