Я начал экспериментировать с C ++ / WinRT, используя Visual Studio 2017 Community Edition. Теперь у меня есть среда, в которой я могу создать отладочную версию примера приложения и запустить его. Я должен был:
- загрузите и установите последнюю версию Windows 10 SDK
- обновление Visual Studio 2017 с помощью пакета C ++ / WinRT и шаблонов
- обновление ОС Windows 10 до последней сборки, сборка 1803
В документации и на веб-страницах рассказывалось об обновлении пакета C ++ / WinRT до Visual Studio, и при попытке компиляции примера произошла ошибка, указывающая на загрузку и установку последней версии Windows 10 SDK.
Когда я попытался запустить отладочную сборку примера приложения, я обнаружил, что мне также нужна Windows 10 Build 1803.
Является ли Windows 10 Build 1803 требованием для запуска приложений с использованием Stadard C ++ и C ++ / WinRT или у меня был опыт использования сборки Debug?
Означает ли это, что люди, которые не обновили свою установку Windows 10 хотя бы до Windows 10 Build 1803, не смогут запустить приложение, разработанное с помощью C ++ / WinRT?
Возможно ли, что корпоративный или корпоративный клиент решит исключить необходимые компоненты C ++ / WinRT, когда он выполнит специфичное для предприятия обновление со своих собственных серверов с собственным набором обновлений, так что приложение C ++ / WinRT не сможет выполнить бежать в их среде?
Существует ли какая-либо упаковка, чтобы необходимые компоненты C ++ / WinRT могли быть включены в приложение?
Приложение: два тестовых приложения
Я заново попробовал два тестовых приложения, с которыми работал. Эта попытка повторяется после внесения изменений в установку последней версии Windows 10 SDK, 10.0.17134, установку расширения C ++ / WinRT Visual Studio и обновление моего ПК до Windows 10 1803.
Первым приложением C ++ / WinRT, которое я попробовал, было консольное приложение из статьи Кенни Керра, C ++ - Представляем C ++ / WinRT , в котором был следующий пример приложения:
#pragma comment(lib, "windowsapp")
#include "winrt/Windows.Foundation.h"
#include "winrt/Windows.Web.Syndication.h"
using namespace winrt;
using namespace Windows::Foundation;
using namespace Windows::Web::Syndication;
int main()
{
initialize(); // NOTE: Generates compiler error C3861: 'initialize': identifier not found
Uri uri(L"http://kennykerr.ca/feed");
SyndicationClient client;
SyndicationFeed feed = client.RetrieveFeedAsync(uri).get();
for (SyndicationItem item : feed.Items())
{
hstring title = item.Title().Text();
printf("%ls\n", title.c_str());
}
}
В конце концов я разработал процедуру создания, компиляции и запуска этого тестового источника следующим образом. Начиная с открытия Visual Studio 2017 Community Edition, я сделал следующее:
- Файл -> Создать -> Проектировать и использовать Windows Desktop, шаблон приложения Windows Console
- сохраняя
#include "stdafx.h"
, но замените созданный шаблон main()
указанным выше источником
- щелкните правой кнопкой мыши решение в обозревателе решений, выберите Свойства, откройте C / C ++ -> Язык и измените «Стандарт языка C ++» на «Стандарт ISO C ++ 17 (/ std: c ++ 17)»
«Версия Windows SDK» в «Свойствах конфигурации» -> «Общие» была установлена на 10.0.17134.0.
Сборка завершилась с ошибкой компиляции error C3861: 'initialize': identifier not found
. Дальнейшие поиски нашли эту статью, cppwinrt.exe в Windows SDK , которая содержала пример приложения, в котором вместо initialize();
использовалось init_apartment();
, поэтому с этим изменением мое приложение-пример компилируется и запускается, создавая список статей. как вывод.
В этой статье Microsoft Docs, Начало работы с C ++ / WinRT , датированной 07/07/2018, приведен пример консоли, в котором используется init_apartment();
вместо initialize()
. Этот пример также является каналом синдикации, но с другим URL.
Во втором тестовом приложении использовался шаблон C ++ / WinRT «Windows Universal» -> «Пустое приложение (C ++ / WinRT)», который генерировал пример приложения, которое компилировалось и запускалось. В диалоговом окне «Свойства» -> «Общие» «Версия целевой платформы» была установлена на 10.0.17134.0, а «Минимум целевой платформы» была установлена на 10.0.15063.0.