2016-11-23 4 views
-2

Ich habe diesen Code von MSDN, um den Text in Sprache zu ändern, und ich habe alle Sitzung, die in der Anleitung der Code funktionierte ohne Fehler, aber wenn ich den Code ausführen den Code für weniger als ausgeführt 2 Sekunden und dann zurück zum Hauptcode, ohne den Code zu lesen. meine Frage hier ist, was ist das Problem genau?das Programm läuft weniger als 2 Sekunden

Dies ist der Code:

#include "stdafx.h" 
#include <sapi.h> 
#include <initguid.h> 

int main(int argc, char* argv[]) 
{ 
    ISpVoice * pVoice = NULL; 
    if (FAILED(::CoInitialize(NULL))) 
     return FALSE; 

    HRESULT hr = CoCreateInstance(__uuidof(SpVoice), NULL, CLSCTX_ALL, __uuidof(SpVoice), (void **)&pVoice); 
    if(SUCCEEDED(hr)) 
    { 
     hr = pVoice->Speak(L"Hello world", 0, NULL); 
     hr = pVoice->Speak(L"This sounds normal <pitch middle = '-10'/> but the pitch drops half way through", SPF_IS_XML, NULL); 
     pVoice->Release(); 
     pVoice = NULL; 
    } 
    ::CoUninitialize(); 
    return TRUE; 
} 
+0

Versuchen Haltepunkte und im allgemeinen Debug-Einstellung. Es gibt keine Angabe, wenn zum Beispiel "! SUCCEEDED (hr)" in diesem Code vorhanden ist. – Ryan

+2

Haben Sie versucht, zu debuggen? –

+0

Ich habe versucht mit Haltepunkten, funktioniert immer noch nicht. und ich änderte SUCCEEDED (hr) in if (! SUCCEEDED (hr)) und immer noch nichts – Marco

Antwort

2

Ihr Anruf zu CoCreateInstance() falsch ist. Sie übergeben die CLSID der SpVoice CoClass, wo die IID der ISpVoice Schnittstelle erwartet wird (also sollte es mit einem E_NOINTERFACE Fehler fehlschlagen).

Versuchen Sie stattdessen:

CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **)&pVoice); 

Alternativ:

CoCreateInstance(__uuidof(SpVoice), NULL, CLSCTX_ALL, IID_PPV_ARGS(&pVoice)); 
+0

, als ich diesen Aufruf CoCreateInstance (CLSID_SpVoice, NULL, CLSCTX_ALL, IID_ISpVoice, (void **) & pVoice) verwendet; ich diese Fehlermeldung: Fehler Fehler LNK1120: 2 nicht aufgelöste externe und dieser Fehler Fehler Fehler LNK2001: extern Symbol _CLSID_SpVoice, und dieser Fehler auch Fehler LNK2001 Fehler: nicht aufgelöstes externes Symbol _IID_ISpVoice. Also ändere ich den Aufruf zu diesem Aufruf CoCreateInstance (__uuidof (SpVoice), NULL, CLSCTX_ALL, __uuidof (SpVoice), (void **) & pVoice); – Marco

+0

Um die externen Symbole aufzulösen, stellen Sie sicher, dass Sie mit 'sapilib.lib' verlinken. Wenn Sie stattdessen '__uuidof()' verwenden, dann muss das zweite '__uuidof()' '_uuidof (ISpVoice)' statt '_uuidof (SpVoice)' sein ('IID_PPV_ARGS()' würde das für Sie erledigen). 'SpVoice' ist die CoClass,' ISpVoice' ist die Schnittstelle. –

Verwandte Themen