6

Недавно я столкнулся с этой проблемой (несколько дней назад все было хорошо): Visual Studio 2012 начала отказываться от создания родной WP8.Ошибка Visual Studio: LNK1104: невозможно открыть файл «kernel32.lib» - только в проектах WP8/сборки Win32

Сегодня я создал новое решение из шаблона 'Windows Phone Direct3D App (Native Only)', чтобы проверить, будут ли мои новые созданные DLL-файлы должным образом поддерживаться WP. Я попытался скомпилировать этот проект, сначала без каких-либо изменений или дополнительных ссылок - чистый код, созданный VS. Однако с данной ошибкой она не удалась. Я очень хорошо знаю, что это значит и что может быть возможной причиной, но я не могу понять, откуда это происходит, в этом случае. Weird вещь: это происходит только в конфигурации '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 :: Ignore:

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 компилируется без проблем. Это нормально?

+1

[Я получил ту же ошибку ссылки.] (Http://stackoverflow.com/questions/15053337/fatal-error-lnk1104-cannot-open-file-kernel32-lib) Возможно, некоторые из ответов там могут быть Помогите. – 0x499602D2

+0

В нем говорится, что он не может найти файл, поэтому проверьте, все ли он там. C: \ Program Files (x86) \ Windows Kits \ 8.0 \ Lib \ win8 \ um \ x86 \ kernel32.lib –

+0

Проверено. Как я уже сказал, я выполнил все основные проверки - без каких-либо результатов. Однако я начал изучать внутренние макросы, используемые средой сборки VS, и кажется, что что-то может быть нарушено. Я буду предоставлять обратную связь в случае рабочего решения. –

ответ

8

Наконец, я нашел причину своих проблем: как я подозревал, внутренняя конфигурация 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), который используется для создания путей include/library. В моей системе, этот макрос был определен как

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

вместо

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

И это все. Я не знаю, когда и как, эта проблема возникла.Ремонт Visual Studio с помощью оригинального установщика был достаточным методом для исправления всего. Все проекты сейчас компилируются без каких-либо проблем.