我建了两个ATL工程,在工程A里用CoCreateInstance或CoGetClassObject想生成工程B中的一个COM对象,可是返回值总是一个负值
这是怎么回事呀,高手帮忙呀 

解决方案 »

  1.   

    不对不对,写错了
    工程B是一个MFC的exe工程,工程A才是一个ATL的工程 :))
      

  2.   

    一定是没有注册的缘故
    regsvr32.exe
      

  3.   

    偶初次接触com
    ltqin() 大侠能否说的详细一些
    谢谢:)
      

  4.   

    你在watch窗口中查看返回值,后面加上,hr,比如你的返回值是hRet,就用hRet,hr,可以看到返回值的意义,一般是你的com库没有初始化
      

  5.   

    CoInitialize(NULL);  //进入COM的套间............         //你的COM的使用
    CoUninitialize();  //不用COM了,退出套间
      

  6.   

    呵呵,初始化com库,用mfc的话,就在程序一开始加上AfxOleInit();就行了
      

  7.   

    使用com之前要调用::CoInitialize(NULL),用完了之后要调用CoUninitialize(),也可以用AfxOleInit();
      

  8.   

    偶要疯掉了
    偶按照各位大侠指点改了程序,可是情况依旧
    偶的客户端代码是这样的:
             HRESULT hr=::CoInitialize(NULL);
    IXMLFile * pSimpleMath=NULL;
    IDispatch * pDispatch=NULL;
    IClassFactory * pClassFactory=NULL; hr=::CoGetClassObject(        // 用CoCreateInstance结果一样
    CLSID_XMLFile,
    CLSCTX_INPROC,
    NULL,
    IID_IXMLFile,
    (void**)&pClassFactory); if ( FAILED(hr) )
            return; pClassFactory->CreateInstance(NULL,IID_IXMLFile,(void**)&pSimpleMath);
    pSimpleMath->QueryInterface(IID_IDispatch,(void**)&pDispatch);
    if(SUCCEEDED(hr))
    {
    }
    pSimpleMath->Release();
    pDispatch->Release();
    ::CoUninitialize();
    return ;大侠们帮偶看看客户端调用有没有问题?
    如果没有问题,偶就准备仔细检查com服务器端的问题了
    多谢了 &_&