Я пытаюсь проверить следующий пример: Тест распознавания речи с использованием Windows SAPI
Код хорошо компилируется, но в процессе выполнения происходит сбой.
Возвращенный указатель на объект ISpRecognizer принимает значения NULL, как показано в следующем коде:
// This function exits when the word passed as parameter is said by the user
int start_listening(const std::string& word)
{
.....
HRESULT hr;
ISpRecognizer* recognizer;
hr = CoCreateInstance(CLSID_SpSharedRecognizer,
nullptr, CLSCTX_ALL, IID_ISpRecognizer,
reinterpret_cast<void**>(&recognizer)); <<<<<ERROR: recognizer =NULL<<< hr = REGDB_E_CLASSNOTREG<< MEAN "class not registered"
check_result(hr);
ISpRecoContext* recoContext;
hr = recognizer->CreateRecoContext(&recoContext);<<<<CRASH: TRY TO ACCESS TO
<<<< A NULL POINTER
...
...
...
Я использую Visual Studio 2015 на Windows 8.1 и ориентирован на платформу x64.
Знаете ли вы, почему указатель на ISPRecognizer равен NULL и почему я получаю HRESULT = REGDB_E_CLASSNOTREG?
Я думаю, что вы заранее не вызываете :: CoInitialize () и неправильно инициализируете ISpReognizer. У меня есть полностью рабочий пример в качестве ответа на другой вопрос Вот.
Других решений пока нет …