6

У меня вопрос, который в настоящее время я не могу эффективно решить, так как я до сих пор не знаком с разработкой приложений Metro. Поэтому, пожалуйста, медведь со мной :)неразрешенные символы после преобразования VS2012 Решение для Windows 8 Metro для VS2013 (на Windows 8.1)

Короче говоря, у меня есть большое, сложное приложение VS2012 Metro, поддерживающее приложение + собственное решение (в настоящее время построенное на Windows 8) в VS2013, ориентированное на Windows 8.1.

Я импортировал решение в VS2013 (размещенное на Windows 8.1) и запускаю преобразование для него и всех подпроектов. Компиляция файлов, но именно с компоновщиком мы сталкиваемся с проблемами. Это пример ошибки компоновщика мы получаем:

error LNK2019: unresolved external symbol __imp___beginthreadex referenced in function <blahblahblah> 
    error LNK2019: unresolved external symbol __imp___mbsrchr referenced in function <blahblahblah> 
    error LNK2019: unresolved external symbol _getenv referenced in function <blahblahblah> 
    error LNK2019: unresolved external symbol __imp___beginthreadex referenced in function <blahblahblah> 
    error LNK2019: unresolved external symbol __imp___endthreadex referenced in function <blahblahblah> 
    error LNK2019: unresolved external symbol __imp___mbsrchr referenced in function <blahblahblah> 
    error LNK2019: unresolved external symbol __imp___mbsnbicmp referenced in function <blahblahblah> 
    error LNK2019: unresolved external symbol __imp___dupenv_s referenced in function <blahblahblah> 

Дело в том, что для каждого отдельного символа, который «не хватает», мы можем увидеть, что объявление присутствует в заголовочных файлах MS Windows поставляется с VS2013 , Проверка ссылок в каждом подпроекте показывает, что они ссылаются на «основные» библиотеки Windows.

Любые идеи, почему это происходит? Благодарю.

+0

Следует отметить, что в Visual Studio 2012 библиотеки CRT lib, используемые для всех приложений, были расположены в Program Files (x86) \ Microsoft Visual Studio 11.0 \ VC \ lib, тогда как Visual Studio 2013, файлы библиотек CRT, используемые для Приложения Metro (или Store) являются отдельными и находятся в папке C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ lib \ store. Убедитесь, что вы подключаетесь к правильным. –

ответ

2

Мы можем видеть, что декларация присутствует в файлах заголовков MS Windows, поставляемых с VS2013. Проверка ссылок на каждого подпроекта показывает, что они являются ссылки на Windows «ядро» ЛИЭС

Это будет трудно диагностировать, что пошло не так с этим мало информации, но это довольно очевидно, что вы ищете в совершенно неправильном углу для этой проблемы. Недопустимые символы: не Функции api для Windows, это функции поддержки выполнения C. Они только, используемые в проекте C++, вы смотрите на .NET-проекты.

Итак, вам нужно сосредоточиться на одном проекте, который генерирует эти ошибки компоновщика, это проект на C++. Команда компоновщика, которая выдается, чтобы заставить ее ссылаться на .lib, который имеет эти символы, полностью автоматизирован, поэтому мало что может пойти не так. Самое первое, что нужно сделать, это принудительно завершить перестройку, чтобы не использовать устаревшие .obj и .lib-файлы, оставшиеся от предыдущей сборки в VS2012. Щелкните правой кнопкой мыши проект и выберите «Перестроить».

И это стоит взглянуть на файл .vcxproj для этого проекта с помощью текстового редактора (например, Блокнот) и убедитесь, что преобразование пошло правильно и сделали правильные изменения:

  • свойство ToolsVersion должны быть изменен с «4,0» до «12,0»
  • свойство MinimumVisualStudioVersion должно быть изменено с 11,0 до 12,0
  • двух новых свойств добавляются, ApplicationType (Windows Store) и ApplicationTypeRevision (8,1)
  • Platfor каждой конфигурации в mToolset свойство должно быть изменено с V110 на V120

Существует файл журнала в Debug\projectname.tlog каталога с именем link.read.1.tlog, которая содержит диагностику, она показывает все .lib файлы, которые компоновщик использует. Он должен содержать следующую строку:

C: \ Program Files (X86) \ Microsoft Visual Studio 12.0 \ VC \ LIB \ STORE \ VCCORLIBD.LIB

который является .lib-файлом, который содержит эти символы.

+0

Спасибо, Ханс. Это, безусловно, дало мне направление для устранения этой проблемы. Посмотрим, как много я могу найти с этого момента. Большое спасибо. –

+0

Хорошее решение. Эй, ты можешь помочь мне с этой проблемой? http://stackoverflow.com/questions/20708957/c-sharp-metro-xaml-designing-the-page-for-any-of-the-screen – TheQuestioner

Смежные вопросы