CLSID未找到是没有注册,或者CLSID写错了

解决方案 »

  1.   

    我补充一下,我的组件Trans.dll中有一个继承IDispatch的接口IPersist    
    我已经在注册表中注册Trans.IPersist
    我的客户程序TestCom中有以下代码:
    if ((hr = ::CLSIDFromProgID(L"Trans.IPersist", &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;
        }
    我发现到了CoGetClassObject就发生错误,难道我的TestCom有问题?
      

  2.   

    请关注:
    http://www.csdn.net/expert/topic/411/411075.shtm
    分数为150分
    十万火级,如能给出答案,再送300分
      

  3.   

    我UP,如果你有兴趣,至少帮我UP一下
      

  4.   

    用CoInitializeEx,可实现MTA,但不知是否你要的效果。
      

  5.   

    kimryo(immortal code)老兄:
        你说的意思是否在我的客户程序中创建线程,然后再调用组件。如果是这样的话,对我的意义不大。我是想实现在组件内部的多线程,这样的话,在VB或者PB的不支持多线程的语言就可以实现组件多线程。
      

  6.   

    我以前实现组件多线程用的是CreateThread,而且组建用的是ATL.
      

  7.   

    我想MFC应该也可以实现,但我的程序为何找不到类工厂对象。我再跟踪一下,发现在InvokeHelper函数调用的时候出现this指针为NULL。我实在是没有办法了。