我正试图找出如何将一些DirectShow功能添加到C应用程序(.NET CF 3.5在Mobile 6和UP上运行),并且我很难找出如何在托管C语言中使用非托管C++类(ES)之间的鸿沟。
我已经编写了C++中需要的功能:基本上,我有一个管理器类,它使用COM来访问所需的DirectShow功能。
快速免责声明:
我是新来的COM,我非常喜欢C++与C语言的集成。
我真的希望有知识渊博的人能为我提出一个进一步研究的基本策略。
以下是我调查过的一些问题,以及我发现的问题:
-
创建一个C++ DLL,然后用C语言调用它。
问题:因为我在一个智能设备平台上工作,创建一个托管C++ DLL不是一个选项,所以C很遗憾不能直接调用我的C++ DLL。
是否创建了一个C(++)“dSee管理器”类的实例?
-
创建一个C++ DLL,然后只需调用pIKEK/DLIMPOLL所需要的方法。
问题:我的解决方案有一个事件监听器和一些东西,所以我需要维护一个Manager类的实例(参见选项3),而不仅仅是调用单个方法。
-
复制C类中的C++类,然后调用C++中的COM调用DSED方法。
问题:这对我来说似乎是最好的选择,但从我在这里发现的情况来看
MSDN
,我需要首先“创建COM接口和类型的托管定义”,不幸的是,我找不到要通过tlbimp.exe导入的directshow tlb文件。wm6 sdk给我的都是dshow-libs、pdbs和exps。我甚至找不到IDL文件来创建TLB,正如一些网站建议的那样。
现在看来,我仍在调查一些事情,但现在有点卡住了。有什么建议吗?
事先谢谢!