2015-12-31 5 views
0

Je suis en train de tester l'exemple suivant: Test of Speech Recognition using Windows SAPIErreur lors du test de Windows API Speech Recognition (SAPI)

Le code compile bien, mais il se bloque en cours d'exécution.

Le pointeur retourné à l'objet ISpRecognizer prend les valeurs NULL comme indiqué dans le code suivant:

// 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 
... 
... 
... 

J'utilise Visual Studio 2015 sur Windows 8.1 et le ciblage de la plate-forme x64. Savez-vous pourquoi le pointeur vers ISPRecognizer est NULL et pourquoi je reçois HRESULT = REGDB_E_CLASSNOTREG?

Répondre

1

Je pense que vous n'appelez pas :: CoInitialize() au préalable, et que vous n'initialisez pas correctement votre ISpReognizer. J'ai un exemple complet en tant que réponse à une autre question sur here.