网上关于Shell扩展的编写方法基本就是那一篇基于ATL3.0的,并说明了要导出IShellExtInit和IContextMenu,但是真是不知道如何在属性化的COM编写中导出这2个接口,还有原本利用非属性化COM编写的也不能编译了,说是IShellExtInit和IContextMenu没有对应的GUID

解决方案 »

  1.   

    http://blog.csdn.net/sinall/archive/2005/05/24/380021.aspx
      

  2.   

    这个是基于ATL3.0的,在ATL7.1中无法通过的,何况还不是属性化COM
    比如COM_INTERFACE_ENTRY(IShellExtInit) 是导出 IShellExtInit,但是属性化中怎么导出?
      

  3.   

    com_interface_entry 属性
    eg:
    [ coclass,
      com_interface_entry ("COM_INTERFACE_ENTRY (IMyClass)"),
      com_interface_entry ("COM_INTERFACE_ENTRY (IShellExtInit)"),  //这里
      com_interface_entry ("COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"),
      uuid("b85f8626-e76e-4775-b6a0-4826a9e94af2")
    ]
      

  4.   

    我知道原因了:
    The default include directory list is bad and causes this error often.
    Change your include list so that vc7\platformsdk\include is before
    vc7\include.