我在这里需要使用包容或聚合吗?

解决方案 »

  1.   

    我在尝试做成包容内部组件时,将我的组件类有内部组件派生但是出现如下错误:
    d:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\atlmfc\include\atlcom.h(1759): error C2259: “ATL::CComObject<Base>” : 不能实例化抽象类
            with
            [
                Base=CClientSession
            ]CClientSession是我自己的组件接口的实现类我使用聚合时,提示我需要使用远程组件调用方式,由CoCreateInstanceEx创建对象
    我该怎么办!
      

  2.   

    to wangweixing2000(星(准备跳槽中!!)) :
    我的客户中不需要使用这个组件,只使用我自己写的组件就行了
    我在没有使用包容或聚合的时候直接使用如下
    hr = CoCreateInstance(
            //__uuidof(RTCClient),
    CLSID_RTCClient,
            //NULL,
    m_pIOuter,
            CLSCTX_INPROC_SERVER,
            __uuidof(IRTCClient2),
            (LPVOID *)&m_pClient
            );但是提示我E_NOINTERFACE,我都不知道怎么才好了
      

  3.   

    上面错了,
    应该是如下调用的:
    hr = CoCreateInstance(
    CLSID_RTCClient,
            NULL,
            CLSCTX_INPROC_SERVER,
            __uuidof(IRTCClient2),
            (LPVOID *)&m_pClient
            );
      

  4.   

    你的客户端用了CoInitialize()吗?
      

  5.   

    hr = CoCreateInstance(
    CLSID_RTCClient,
            NULL,
            CLSCTX_INPROC_SERVER,
            __uuidof(IRTCClient2),
            (LPVOID *)&m_pClient
            );hr返回什么错误?
      

  6.   

    既然客户端不用,何必要进行聚合或者包容呢?
    你把内部组件的dll放到你的项目文件夹下面,然后import它的dll
    接着就可以调用了!
      

  7.   

    我的自己的组件在Web工程里面使,内部组件里的事件同步和其他的一些细节我在C#里面不熟悉,所以我就自己写一个包装了内部组件的这些细节步骤,供Asp.net调用
      

  8.   

    那很清楚了,CLSID_RTCClient没有IRTCClient2这个接口!!!
      

  9.   

    To Cline:
       是这个问题,能创建对象了
    不知道怎么回事,我在前两天创建的一个客户中使用IRTCClient2没有问题,今天重新创建一个客户一样使用就出现问题,但是前一个客户我刚才重新编译连结后是没有问题.
    为什么会出现这样不一致的情况呢?
    我必须使用IRTCClient2这个接口才行啊