可能是为了IDispatch接口?有兴趣一起探讨。

解决方案 »

  1.   

    是有区别的,我以前曾经作过测试,在库块内定义的接口,则会在.tlb文件中有说明,你试试把一个组件的出接口定义在库块外面,就知道怎么会事了!
      

  2.   

    Essential COM中有一段内容是说明你这个问题的。原话我记不得了,大意是,library block内的所有内容,以及被该block内引用到的所有在library block外的内容都会被MIDL写入tlb文件。结果是,对于你给的例子,两者是没有区别的。但是如果对第一个例子,在library block内你没有声明那个block外的接口,那么这个接口是不会出现在tlb文件中的。你还可以参考MSDN中的MIDL language reference。