在.net中,ATL写的COM组件接口与标准C++写的接口之间有啥区别,我知道ATL的接口是在IDL文件中定义的,而且每个接口都有一个UUID,我现在写了一个标准C++接口,想让组件继承它,同时还写了一个类,此类也继承这个接口,然后组件去控制类的操作,这样可行吗?

解决方案 »

  1.   

    在IDL文件定义是为了用MIDL来进行编译
    “IDL是接口定义语言。
    MIDL是Microsoft的IDL编译器。
    在用IDL对接口和组件进行了描述后,可以用MIDL进行编译,生成相应的代理和存根DLL的C代码。”
    所以你只要在VC中使用组件的编写,那就跟C++语言没什么区别了
    你可以在类中继承C++接口,然后就通过这个组件使用这个接口,这是在VC的前提下。
    想用组件控制类的操作,你得有这个类的声明文件,然后可以让组件返回这个类,但不要用QueryInterface方式来得到类,可以用类似GetXX方式来得到,再进行类的操作。这样的话,你得有一个类的声明文件
      

  2.   

    组件实现里你可以继承与其他类和接口。
    到调用你组件的程序只能获得你通过IDL里描述的接口。