Я столкнулся с этой проблемой недавно (несколько дней назад все работало нормально): Visual Studio 2012 начал отказываться от создания собственных проектов WP8.
Сегодня я создал новое решение из шаблона «Приложение для Windows Phone Direct3D (только для Native)», чтобы проверить, будут ли мои вновь созданные библиотеки 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).
Конфигурация проекта: (на обеих платформах)
Linker :: Вход:
d3d11.lib;%(AdditionalDependencies)
Linker :: Игнорировать:
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)
Есть идеи, что еще может быть не так или неправильно настроено? У меня заканчиваются идеи, я никогда не видел ничего подобного раньше.
Кстати, я заметил еще одно изменение: когда раньше я пытался скомпилировать проекты WP8 в конфигурации ARM, всегда возникала ошибка: «сборка приложения ARM на рабочем столе не поддерживается» (или что-то в этом роде). Теперь ARM компилируется без проблем. Это нормально?
Наконец, я нашел причину своих проблем: как я подозревал, внутренняя конфигурация Visual Studio была нарушена.
Я сделал все стандартные шаги, которые могут быть выполнены в случае LNK1104, однако:
- kernel32.lib был в правильном местоположении - все каталоги include и библиотеки были правильными - стандартные файлы * .props были прикреплены к каждому проекту
Однако причина кроется в другом месте.
Все пути определены с использованием стандартных макросов. Одним из них является $ (WindowsSDK80Path), который используется для построения путей include / library. В моей системе этот макрос был определен как
C:\Program Files (x86)\Windows Phone Kits\8.0
вместо
C:\Program Files (x86)\Windows Kits\8.0
И это все. Я не знаю, когда и как эта проблема возникла. Восстановление Visual Studio с помощью оригинального установщика было достаточным способом исправить все. Все проекты сейчас компилируются без проблем.
Других решений пока нет …