我在使用微软的Speech SDK5.1进行开发(引进了SAPI.dll),下边是微软给提供的一个VC的例子,但我在调试的时候,总是hr那里出现问题,本来hr应该等于0,可结果总是显示-2147467262。
请问各位大侠,哪里出问题了?  
   CLSID CLSID_SpVoice;    // class ID for the SAPI SpVoice object
   LPDISPATCH pDisp;       // dispatch interface for the class
   ISpeechVoice voice;     // use the MFC Class Wizard generated wrapper   CLSIDFromProgID(L"SAPI.SpVoice", &CLSID_SpVoice);
   int result = voice.CreateDispatch(CLSID_SpVoice); 
   pDisp = voice.m_lpDispatch;    HRESULT hr = pDisp->QueryInterface(CLSID_SpVoice, (void**)&voice.m_lpDispatch);   if (hr == S_OK) 
   { 
     pDisp->Release(); 
   } 
   else
   { 
    voice.AttachDispatch(pDisp, TRUE); 
   }    voice.Speak("hello world", 1);

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/1983/1983771.xml?temp=.3034937
      

  2.   

    楼上的,你好!你觉得应该用IID_ISpeechVoice,可IID_ISpeechVoice应该怎样定义呢?
      

  3.   

    一下这个代码是基于 Speech 5.1 的,我想你可以参考一下#include <iostream.h>
    #include <objbase.h>
    #include <sapi.h>int main(int argc, char* argv[])
    {
    CLSID CLSID_SpVoice; CoInitialize(NULL); CLSIDFromProgID(L"SAPI.SpVoice", &CLSID_SpVoice); ISpVoice * pSpVoice = NULL; if (FAILED(CoCreateInstance(CLSID_SpVoice, NULL, 
    CLSCTX_INPROC_SERVER, IID_ISpVoice, (void **)&pSpVoice)))
    {
    cout << "Failed to create instance of ISpVoice!" << endl;
    return -1;
    } Sleep(128); pSpVoice->Speak(L"Hello World!", SPF_DEFAULT, NULL); pSpVoice->Release(); CoUninitialize(); return 0;
    }