【发布时间】:2009-06-23 22:42:46
【问题描述】:
我试图弄清楚如何将一些 directshow 功能添加到 C# 应用程序(在移动设备 6 及更高版本上运行的 .net cf 3.5),我很难弄清楚如何弥合使用之间的差距托管 C# 中的非托管 c++ 类。
我已经用 C++ 编写了我需要的功能:基本上,我有一个管理器类,它使用 COM 来利用所需的 directshow 功能。 快速免责声明:我是 COM 新手,对于将 C++ 与 C# 集成非常陌生。
我真的希望知识渊博的人可以为我提供进一步研究的基本策略。以下是我研究过的一些,以及我发现的问题:
创建一个 C++ DLL,然后从 C# 调用它。
问题:由于我在智能设备平台上工作,创建托管 C++ dll 不是一个选项,因此 C# 很遗憾无法直接调用我的 c++ dll。 从 C#(通过 COM)创建我的非托管 C++“dshow manager”类的实例是最佳选择吗?创建一个 C++ DLL,然后只需 Pinvoke/DLLImport 所需的方法。
问题:我的解决方案有一个事件监听器和一些东西,所以我需要维护一个管理器类的实例(参见选项 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