Использование пространства имен Windows.Media.Speechrecognition в приложении Qt C ++

Я пытаюсь разработать речевой ввод текста с пространством имен Windows.Media.SpeechRecognition, как описано здесь: https://msdn.microsoft.com/en-us/library/windows.media.speechrecognition.aspx

Сейчас я работаю в Qt и, по-видимому, нет такого понятия, как пространство имен Windows:

using namespace Windows::Media::SpeechRecognition;

int main(int argc, char *argv[])
{
SpeechRecognizer speechRecognizer = new SpeechRecognizer();

//...

return 0;
}

результаты в

C2653: у «Windows» нет класса или пространства имен

Итак, я подумал, что мне, возможно, придется что-то включить или добавить библиотеку в свой файл, но я не могу ничего найти о том, что и где взять.

В случае возникновения вопроса: я использую это, потому что мне нужен речевой ввод, чтобы принимать только языки, кроме английского.

1

Решение

Вы должны включить Windows.Media.SpeechRecognition.h заголовок. Из настольных приложений пространство имен на самом деле ABI::Windows::Media::SpeechRecognition, Вам также нужно будет использовать WRL для его вызова. Вы можете создать SpeechRecognizer объект как это:

#include <roapi.h>
#include <Windows.Media.SpeechRecognition.h>
#include <wrl.h>

using namespace ABI::Windows::Media::SpeechRecognition;
using namespace Microsoft::WRL;
using namespace Microsoft::WRL::Wrappers;

int main()
{
HRESULT hr = RoInitialize(RO_INIT_MULTITHREADED);
if (FAILED(hr))
return hr;

ComPtr<IInspectable> instance;
ComPtr<ISpeechRecognizer> recognizer;
hr = RoActivateInstance(HStringReference(L"Windows.Media.SpeechRecognition.SpeechRecognizer").Get(), &instance);
if (FAILED(hr))
return hr;

hr = instance.As(&recognizer);
if (FAILED(hr))
return hr;

// do stuff with recognizer

RoUninitialize();
}

Вам также нужно будет связаться с RuntimeObject.lib чтобы найти такие функции, как RoInitialize или же RoActivateInstance,

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]