我的filter是基于mfc的dll.在添加用户自定义的接口时编译出错link2001,无法处理给接口定义的IID符号。
   directshow自带的例子中实现的dll好像不是基于mfc的,添加接口非常简单。但是对于基于mfc支持的dll应该如何添加用户自定义接口呢?
   请有经验的朋友给予指点。
谢谢!

解决方案 »

  1.   

    代码贴出来
    P.S.不要用MFC扩展DLL
      

  2.   

    蒋先生,我对接口的实现几乎是和其他directshow例子中接口实现的代码完全一样。至于其它部分的代码真不知道该贴那一部分的。
    我想使不是需要在option setting一类的编译设置上做文章呢?我说不清楚。我用mfc是因为想使用其中的CTypedPtrArray,不知道有没有可能使用这个类而不引入其他mfc问题呢?
    谢谢!
      

  3.   

    蒋先生:我的问题解决了。原因竟然是生成的guid不正确,导致系统无法处理。可能是我无意中修改了guid值吧,真是个低级的错误,但他却困扰了我几天。
        我第一次接触directshow,发现开发一个功能完备的filter需要一些com知识,我在这方面所知甚少。我发现一个filter在开发的时候可以看作是一个类,但是使用这个组件的时候却不能完全像使用类对象一样。为了达到和组件通讯得实现借口。
        我想能不能让filter在某个需要的时候向应用程序发消息呢?在directshow中组件与应用程序之间好像消息都是固定的。能否像"观察者"模式那样自动的法消息,应用程序得到通知后马上做出反应呢?
        我的com知识很少,不知道com怎样完成这种消息传递的。蒋先生能不能给我做个简要的讲解。
        谢谢!
      

  4.   

    IID_XXXX,是否链接了正确的lib?
    另,不要用MFC扩展DLL。
      

  5.   

    com可以通过触发事件来和外界交互。如果用IDispatch触发事件性能不佳,也可以考虑导出回调函数的访问接口。