各位高手好!
小弟目前想在程序中实现一个文字转换成语音的功能,使用了QAxObject,在主
线程中创建一个对象,就可以正常使用,代码如下在:
QAxObject speak("SAPI.SpVoice");
speak.dynamicCall("Speak(
QString)", "12334");
但是由于在主线程中创建QAxObject对象并调用的话,会造成
界面假死,后来在线程中创建QAxObject
并调用,但是却存在初始化问题,无法正常工作,在网上查了很多信息,说是使用COM控件时必须进行初始化::CoInitialize(NULL);结束的时候使用CoUnInitialize() 收回COM库,描述如下
首先调用 CoInitialize(NULL) 初始化COM库
CoCreateInstance(....) 创建COM对象并获得接口使用- 使用
- 释放COM对象
最后 CoUnInitialize() 收回COM库
现在有一个问题啊,我在Qt中
没有查找到
CoInitialize 和CoUnInitialize 这两个函数,请问怎么在Qt的线程中初始化COM 还有一个问题是,我刚才做了一个实验,QAxObject对象依然是在线程中声明的,然后写了一个函数,让其由主线程调用,可以正常使用,但是放在run函数中调用时就会出问题,不能正常使用,给出一个提示,QAxBase: Error calling IDispatch member Speak: Exception thrown by server
Code : 496Source :
Description: Help :
Connect to the exception(int,QString,QString,QString)
signal to catch this exception
谁知道为什么啊