Можно ли нацеливаться на Windows 10.0.14393 с C++/WinRT?
Я хотел бы сделать приложение для моей Lumia, застрявшей на Win 10.0.14393 (или 1609) с использованием C++/WinRT. Я создал пустой проект приложения с
- Целевая версия платформы: 10.0.17134.0 и
- Целевая платформа мин. Версия: 10.0.14393.
Проект не компилируется со следующими ошибками:
ошибка C2039: "DisconnectUnloadedObject": не является членом "winrt::BlankApp2:: creation::MainPageT"
ошибка C2039: "UnloadObject": не является членом "winrt::BlankApp2:: creation::MainPageT"
Это ошибка или намеренное поведение? Обратите внимание, что установка любого более нового мин. версия приводит к успешной сборке.
2 ответа
Последняя версия C++/WinRT может поддерживать все версии Windows 10, включая 14393 и более ранние версии.
Помните, что C++/WinRT - это и библиотека, и языковая проекция. Языковая проекция обеспечивает доступ к API-интерфейсам Windows, предназначенным для данной версии Windows. Каждая версия представляет новые API. Поэтому, если вы хотите использовать минимальную версию Windows, вам нужно убедиться, что вы ограничиваете себя API-интерфейсами, доступными в этой версии Windows. Однако я бы порекомендовал использовать новейший компилятор и последнюю версию Windows SDK, поскольку они содержат множество исправлений ошибок.
Я предлагаю вам использовать Visual Studio 2015 при нацеливании на старые обновления C++/WinRT и Windows 10. У меня сложилось впечатление, что большинство из них были поставлены поверх Visual Studio 2015 с обновлениями Visual Studio 2015, а также обновлениями для Windows 10 SDK и C++/WinRT.
При использовании Visual Studio 2015 с C++/WinRT вам потребуется последнее обновление, обновление 3. Проверьте наличие обновлений и убедитесь, что ваша копия Visual Studio 2015 содержит самые последние обновления. Я просто использовал установку Visual Studio 2015 Enterprise для перекомпиляции чего-то, что прекрасно компилируется с Visual Studio 2017, и обнаружил, что мне не хватает инструментов и SDK, в том числе для Win 10 SDK 10.0.14393, которые были в обновлении 3, которое я еще не установил,
Вы также можете перейти в раздел "Программы и компоненты" из панели управления, найти Microsoft Visual Studio 2015 в списке, а затем щелкнуть правой кнопкой мыши и изменить, что позволит вам проверить, что установлено, и что-либо изменить.
Работая с C++/WinRT в течение последних нескольких месяцев, я использовал и Visual Studio 2017 Community Edition, и Visual Studio 2015 Enterprise Edition.
Я видел различия при переносе решения с VS 2015 на VS 2017, которые требовали от меня просмотра страницы свойств решения. См. Также обсуждение синхронизации SDK с обновлением Windows 10 и использования WinRT со стандартным C++.
Работа с последними обновлениями Windows 10 и VS 2017 работает лучше всего для меня, потому что я могу ориентироваться на последние обновления Windows 10. Однако я обнаружил, что попытка нацелить старые обновления Windows 10 с VS 2017 может быть проблематичной.
Извините, что не могу быть более конкретным. Во всей этой области обновлений C++/WinRT и Windows 10 гораздо больше ковбоев, чем мне бы хотелось, хотя сейчас это, похоже, успокаивается.
C++/WinRT - это библиотека шаблонов, которая изначально была проектом с открытым исходным кодом на GitHub. У меня сложилось впечатление, что Microsoft приобрела его, и теперь это стандартное предложение продукта. Я полагаю, что когда-то была значительно переписана C++/WinRT, поскольку Visual Studio 2015, а затем Visual Studio 2017 перешли к реализации большего количества C++17 и предложенных стандартов C++20 и Технических спецификаций для сопрограмм.
Это, кажется, область, все еще изменяющаяся в некоторой степени. Однако большинство изменений происходили с VS 2015 и в начале VS 2017 вместе с SDK. Похоже, что сейчас с последними обновлениями это довольно солидно.