首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

CLR控制台和MFC中的CoInitiallize()函数的有关问题

2012-03-19 
CLR控制台和MFC中的CoInitiallize()函数的问题。我在前者的中,使用COM组件没有用::CoInitialize(NULL)程序

CLR控制台和MFC中的CoInitiallize()函数的问题。
我在前者的中,使用COM组件没有用::CoInitialize(NULL);程序编译通过,并且通过调用COM实现发音;代码如下:
  ISpVoice *pVoice=NULL;
/*if(FAILED(::CoInitialize(NULL)));
return FALSE;*/

HRESULT hr=CoCreateInstance(CLSID_SpVoice,NULL,CLSCTX_ALL,IID_ISpVoice,(void**)&pVoice);
if(SUCCEEDED(hr))
{
hr=pVoice->Speak(L"Hello, World",0,NULL);
pVoice->Release();
pVoice=NULL;
}
::CoUninitialize();

我在后者的程序中,则必须加入这个“::CoInitialize(NULL);”,才能发音,代码如下:
  ISpVoice *pVoice=NULL;
::CoInitialize(NULL);
  HRESULT hr=CoCreateInstance(CLSID_SpVoice,NULL,CLSCTX_ALL,IID_ISpVoice,(void**)&pVoice);
if(SUCCEEDED(hr))
{
hr=pVoice->Speak(L"Hello, World",0,NULL);
pVoice->Release();
pVoice=NULL;
}
::CoUninitialize();
最后搜索了一下MSDN,解释是“ Applications must initialize the COM library before they can call COM library functions other than CoGetMalloc and memory allocation functions. ”既然如此,那么在控制台的程序中为何能实现调用COM实现发音呢?

[解决办法]
.net内部自动初始化了。
[解决办法]
看看 Main 函数的
STAThreadAttribute。

热点排行