我写了一个程序调用系统的com组件,然后调用其方法。
程序写出来了,而且结果正常。但是一下这个函数只能被调用一次,调用第二次就崩溃,请教大家是什么原因
CString  GetDatabaseinfo()
{
CString buf;
ILsComSvr *pILs=NULL;
CLSID LSclsid;
HRESULT hr; CLSIDFromProgID(OLESTR("LsComServer.LsComSvr"),&LSclsid);     //得到组件的clisid hr = CoCreateInstance(LSclsid,NULL,CLSCTX_INPROC_SERVER,__uuidof(ILSInterface),(void **)&pILs);// AfxMessageBox(pILs->GetConnectStr());    //测试可正常得到结果 buf.Format("%s",_com_util::ConvertBSTRToString(pILs->GetConnectStr())); pILs->Release();     //释放
CoUninitialize();    //释放
return buf;
}

解决方案 »

  1.   

    CoUninitialize();    //释放
    这行不要放到函数里,释放了就不能再调用COM服务了,放到程序结束的函数里
      

  2.   

    太感谢楼上了。。果然是,因为我的初始化是放在InitInstance里的,而他只执行一次,我第一次释放了,以后再调用肯定崩溃。谢谢大哥
      

  3.   

    顺便还问一下,CoUninitialize();  一般写在MFC的那里比较合适啊?
      

  4.   

    APP() ~app() InitInstance()ExitInstance()也行个人认为用第一个比较好