我试图弄清楚如何向 C# 应用程序(在移动设备 6 及更高版本上运行的 .net cf 3.5)添加一些 directshow 功能,但我很难弄清楚如何弥合使用非托管 c++ 类之间的差距(es) 在托管 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。
就目前而言,我仍在调查事情,但现在有点卡住了。有什么建议么?提前致谢!