我正在尝试使用windows.media.speechrecognition namespace开发语音到文本输入,如下所述:https://msdn.microsoft.com/en-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"无类或名称空间
好吧,所以我认为我可能必须包括一些东西或在我的专业文件中添加一个库,但是我找不到关于什么以及在哪里得到的东西。
如果问题出现:我正在使用此问题,因为我需要语音输入才能接受仅接受英语以外的语言。
您需要包括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
。