代码之家  ›  专栏  ›  技术社区  ›  Joe

DirectShow in C for Windows Mobile-策略?

  •  1
  • Joe  · 技术社区  · 15 年前

    我正试图找出如何将一些DirectShow功能添加到C应用程序(.NET CF 3.5在Mobile 6和UP上运行),并且我很难找出如何在托管C语言中使用非托管C++类(ES)之间的鸿沟。

    我已经编写了C++中需要的功能:基本上,我有一个管理器类,它使用COM来访问所需的DirectShow功能。 快速免责声明: 我是新来的COM,我非常喜欢C++与C语言的集成。

    我真的希望有知识渊博的人能为我提出一个进一步研究的基本策略。 以下是我调查过的一些问题,以及我发现的问题:

    1. 创建一个C++ DLL,然后用C语言调用它。
      问题:因为我在一个智能设备平台上工作,创建一个托管C++ DLL不是一个选项,所以C很遗憾不能直接调用我的C++ DLL。 是否创建了一个C(++)“dSee管理器”类的实例?

    2. 创建一个C++ DLL,然后只需调用pIKEK/DLIMPOLL所需要的方法。
      问题:我的解决方案有一个事件监听器和一些东西,所以我需要维护一个Manager类的实例(参见选项3),而不仅仅是调用单个方法。

    3. 复制C类中的C++类,然后调用C++中的COM调用DSED方法。 问题:这对我来说似乎是最好的选择,但从我在这里发现的情况来看 MSDN ,我需要首先“创建COM接口和类型的托管定义”,不幸的是,我找不到要通过tlbimp.exe导入的directshow tlb文件。wm6 sdk给我的都是dshow-libs、pdbs和exps。我甚至找不到IDL文件来创建TLB,正如一些网站建议的那样。

    现在看来,我仍在调查一些事情,但现在有点卡住了。有什么建议吗? 事先谢谢!

    1 回复  |  直到 15 年前
        1
  •  2
  •   ctacke    15 年前

    你也许可以看看 the desktop DShow.NET library 作为移植指南。亚历克斯·莫古连科的 recent blog on playing audio and video with DShow on WinMo 也是一种很好的资源。

    编辑:我想我没有直接回答关于战略的问题。是的,3是前进的道路。包装dshow并调用它,不要再添加另一层混乱的间接寻址(com已经足够混乱了)。