描述:
语句如下:
CLSID clsid;
LPCLASSFACTORY pClf;
LPUNKNOWN pUnk;
HRESULT hr;
……
if ((hr = ::CLSIDFromProgID(L"mydbdll", &clsid)) != NOERROR) {
TRACE("unable to find Program ID -- error = %x\n", hr);
return;
}
if ((hr = ::CoGetClassObject(clsid, CLSCTX_INPROC_SERVER,
NULL, IID_IClassFactory, (void **) &pClf)) != NOERROR) {;
TRACE("unable to find CLSID -- error = %x\n", hr);
return;
}
……
每次调试总是
unable to find CLSID -- error = 800401f0
DLL没有问题,用别的程序可以调用,就是这个程序不可,真不理解!
解决方案1:
1. 将CLSCTX_INPROC_SERVER 换成CLSCTX_ALL试试;
2. COM库初始化了吗? CoInitializeEx(..);
3. 查查800401f0错误码的含义
4. hr = CoGetClassObject(clsid, CLSCTX_INPROC_SERVER,
NULL, IID_IClassFactory, (void **) &pClf);
if( FAILED(hr) )
{
....
}
您可能想查找下面的文章:
- 一个简单问题,以前认为搞懂了,现在却再次糊涂了!关于CoGetClassObject和DllGetClassObject和类厂
- CoGetClassObject内部原理
- CoGetClassObject函数仅仅是用来获取类厂对象的吗?
- 使用IDL文件生成组件注册代码,CoGetClassObject返回E_NOINTERFACE
- 调用CoGetClassObject的时候返回0x80080005,意思是服务器运行失败
- CoGetObject与CoGetClassObject区别
- 所谓的"聚合"就是用CoGetClassObject创建类厂然后创建对象实例吗?
- CoGetClassObject失败但是CoCreateInstance成功,这是为什么?
- CoCretaeInstance失败,但CoGetClassObject成功
- 关于Com的CoGetClassObject函数。