在定义一个com接口的时候是不是一定要使用extern "C"
就是说是不是说一定要把一个接口定义在
extern "C"中
我在写一个使用完全使用c++写的com时,建立一个IUnknown的接口,但是有这样的提示error
error C2011: 'IUnknown' : 'struct' type redefinition
是不是这个文件是在什么地方定义的???
是什么库定义的它
这个库不使用行吗???????

解决方案 »

  1.   

    “完全使用c++”?不一定吧?
    你别在VC下,看它还认识IUnknown吗?
    贴你代码
      

  2.   

    IUnknown 在<unknwn.h> 中定义
      

  3.   

    看你问题的这个问题  就知道  你 c++学的还不购好
    建议先别学com  把c++ 学精  虽然com和语言无关,但c++是写com组件的最好的语言而且绝大多数讲com书都是以c++作为例子开发语言的
      

  4.   

    IUnknown是C++中定义的,你再自己定义,当然不行了。
    除非你自己创造一个语言,开发一个编译器,你把IUnknown定义成啥都行,否则就得按c++的规矩走
      

  5.   

    定义接口的时候不用extern "C",
    接口定义解决了c++的name mangling问题,就不用extern "C"
    同时解决了二进制的继承问题。
      

  6.   

    com组件接口实现,跟c++是没有关系的。
    那是用com语言(应该说语法是类似于c的)来实现的,它独立于编译器。