Я добавляю Cortana в игру DirectX / XAML Windwos 10. Каждый пример, который я могу найти, приведен на C #, а не на C ++. Обычно это не будет проблемой, но, видимо, я не реализую это правильно в C ++ и мне нужна помощь с этим.
Цель этого фрагмента кода — загрузить VCD-файл, который Кортана использует для голосовых команд, связанных с моим приложением. Я уже создал файл VCD, используя стандартные примеры.
Это конкретный код на C #, который мне трудно реализовать на C ++:
var storageFile =
await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(
new Uri("ms-appx:///myvcdfile.xml"));
await
Windows.ApplicationModel.VoiceCommands.VoiceCommandDefinitionManager.
InstallCommandDefinitionFromStorageFileAsync(storageFile);
Моя попытка реализации C ++ это:
Uri^ uri = ref new Uri("ms-appx:///myvcdfile.xml");
create_task(StorageFile::GetFileFromApplicationUriAsync(uri)).then([](task<StorageFile^> t) {
StorageFile^ sfile = t.get();
Windows::ApplicationModel::VoiceCommands::VoiceCommandDefinitionManager::InstallCommandDefinitionsFromStorageFileAsync(sfile);
});
Когда я запускаю это, никакая видимая ошибка не генерируется (без немедленного сбоя), но в окне вывода выдаются следующие исключения:
Exception thrown at 0x76473E28 (KernelBase.dll) in darksong.exe: 0x40080201: WinRT originate error (parameters: 0x8000000B, 0x00000040, 0x018BE280).
Exception thrown at 0x76473E28 (KernelBase.dll) in darksong.exe: 0x00000005: Access is denied.
Exception thrown at 0x76473E28 (KernelBase.dll) in darksong.exe: 0x000006D9: There are no more endpoints available from the endpoint mapper.
Exception thrown at 0x76473E28 (KernelBase.dll) in darksong.exe: 0x000006D9: There are no more endpoints available from the endpoint mapper.
Exception thrown at 0x76473E28 (KernelBase.dll) in darksong.exe: 0x40080201: WinRT originate error (parameters: 0x80004005, 0x00000013, 0x0EEAF160).
Ошибка «доступ запрещен» заставляет меня думать, что есть проблема с открытием самого файла, хотя, если я намеренно ввожу неверное имя файла, это совершенно другая ошибка, которая вылетает, поэтому я знаю, что он находит файл, но, возможно, возникла некоторая проблема с доступом к файлу Это?
Кроме того, даже если я исключаю строку «InstallCommandDefinitionsFromStorageFileAsync ()», все исключения все еще выбрасываются.
Любая помощь приветствуется, спасибо заранее!
У вас наверняка есть ошибка в вашем XML-файле (если вы задали в качестве примера в команде элемент, использующий PhraseList, но вы забыли узел PhraseList в своем XML-файле)