寒假没事就学了下语音识别(Microsoft Speech 5.1)
开发,遇到一个麻烦。
一开始程序只有一个
GUI主线程,调用COM对象的Speak()发音函数,可以正常发音;后来为了避免发音时GUI死掉的现象改成两个线程(一个GUI主线程,一个用来发音的线程),但是在次线程中无法发音,查了些
资料说是多线程程序中,每个单独线程都要CoInitialize
(NULL
);来初始化COM库,我也照做了,但是仍然没有解决问题,错误如下:QAxBase: Error calling IDispatch member Speak: Exception thrown by server
Code : 496
Source :
Description:
Help :
Connect to the exception(int,QString,QString,QString) signal to catch this exception
抛出的异常提示我连接一下exception信号来获取进一步的错误信息,于是我写了一个对应的槽函数:
void SOPThread::ERROR1(int code,QString source,QString disc,QString help)
{
qDebug()<<"##################################";
qDebug()<<code<<"\n";
qDebug()<<source<<"\n";
qDebug()<<disc<<"\n";
qDebug()<<help<<"\n";
qDebug()<<"##################################";
}
但是基本上没得到什么有用的东西,提示如下:##################################
-1003617808
""
""
""
##################################
我在想是不是我的初始化COM库的地方有问题,还缺东西,请高手指点一下...