Я добавляю Cortana в игру DirectX/XAML Windwos 10. Каждый пример, который я могу найти, указан в C#, а не C++. Обычно это не будет проблемой, но, видимо, я не реализую ее правильно на C++ и нуждаюсь в некоторой помощи с этим.Нужна помощь в загрузке файла Cortana VCD при использовании C++ DirectX/XAML
Назначение этого фрагмента кода - загрузить файл VCD, который Cortana использует для моих голосовых команд, связанных с приложением. Я уже создал файл 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).
Ошибка «access denied» заставляет меня думать, что есть проблема с открытием самого файла, хотя, если я намеренно вводить недопустимое имя файла, это совершенно другая ошибка, которая падает, поэтому я знаю, что она находит файл, но, возможно, имеет некоторые проблемы на самом деле доступ к нему?
Кроме того, даже если я исключаю строку «InstallCommandDefinitionsFromStorageFileAsync()» Исключения все еще бросаются.
Любая помощь приветствуется, спасибо заранее!