Com不是要求,要实现几个IUnknown的接口么,QueryInterface,AddRef,Release等等么。ATL的项目里面,只有一个CComModule的全局对象,几个DllRegisterService,DllUnregisterService等等函数。这几个函数和Com接口是实现没有什么关系吧?它把Com实现要求的那些东西,包装到哪里去了? 我应该如何添加自己的Interface呢?谢谢!

解决方案 »

  1.   

    你仅仅生成了一个项目,还要使用wizzard添加interface对象
      

  2.   

    COM 组件设计与应用
    http://www.vckbase.com/vckbase/columnist/yangfeng/第五篇-用 ATL 写第一个组件
      

  3.   

    组件才需要实现IUnknown接口
    DLL服务器本身只需要DllRegisterService/UnregisterService/CanUnload这几个导出函数建立一个简单对象或者ActiveX控件后添加的代码才是组件的实现ATL中的COM实现并不一定需要显式得提供IUnknown的实现
    通常是在实例生成时利用CCom*Object的模板化间接完成的
    ATL中QI是通过查表进行的
    通过DECLARE_INTERFACE宏在接口表中添加接口,
    同时因为利用到C++的多继承,类也需要从此接口派生