【问题标题】:Directshow in C# for windows mobile- strategy?C# 中的 Directshow for windows mobile- 策略?
【发布时间】:2009-06-23 22:42:46
【问题描述】:

我试图弄清楚如何将一些 directshow 功能添加到 C# 应用程序(在移动设备 6 及更高版本上运行的 .net cf 3.5),我很难弄清楚如何弥合使用之间的差距托管 C# 中的非托管 c++ 类。

我已经用 C++ 编写了我需要的功能:基本上,我有一个管理器类,它使用 COM 来利用所需的 directshow 功能。 快速免责声明:我是 COM 新手,对于将 C++ 与 C# 集成非常陌生。

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

  1. 创建一个 C++ DLL,然后从 C# 调用它。
    问题:由于我在智能设备平台上工作,创建托管 C++ dll 不是一个选项,因此 C# 很遗憾无法直接调用我的 c++ dll。 从 C#(通过 COM)创建我的非托管 C++“dshow manager”类的实例是最佳选择吗?

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

  3. 在 C# 中复制 C++ 类,然后在 C# 中通过 COM 调用 dshow 方法。 问题:这对我来说似乎是最好的选择,但从我在这里找到的MSDN,我需要首先“创建 com 接口和类型的托管定义”,不幸的是我找不到 directshow TLB 文件通过 TLBImp.exe 导入。 WM6 SDK 给我的所有内容都是 dshow LIB、PDB 和 EXP。正如一些网站所建议的那样,我什至找不到 IDL 文件来创建 TLB。

就目前而言,我仍在调查事情,但现在有点卡住了。有什么建议么? 提前致谢!

【问题讨论】:

    标签: com compact-framework mobile directshow


    【解决方案1】:

    您可能会将the desktop DShow.NET library 视为移植指南。 Alex Mogurenko 的recent blog on playing audio and video with DShow on WinMo 也是一个很好的资源。

    编辑:我想我没有直接回答关于策略的问题。是的,#3 是要走的路。包装 DShow 并调用它,不要再添加一层混乱的间接(COM 已经够混乱了)。

    【讨论】:

    • Alex Mogurenko 的那篇文章帮了我很大的忙,尤其是因为他没有去,似乎不必把我担心的所有 TLB 文件废话弄得一团糟。我认为这对我来说是一个很好的起点。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-09
    • 2012-08-22
    • 1970-01-01
    • 2019-07-01
    • 1970-01-01
    • 2010-11-18
    • 1970-01-01
    相关资源
    最近更新 更多