我最近遇到了这个问题(前几天一切正常):Visual Studio 2012开始拒绝构建原生WP8项目.
今天,我从模板'Windows Phone Direct3D App(Native Only)'创建了新的解决方案,以检查我是否在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编译没有问题.这是正常的吗?
最后,我找到了我的问题的原因:我怀疑,内部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是解决所有问题的充分方法.所有项目现在编译都没有任何问题.