有没有人知道如何使用Visual Studio 2008在C ++中创建一个简单的COM组件的最新示例,这样我就可以学习如何在非托管代码和托管代码之间编组不同类型的数据,然后再回来。我找到了一些建议C ++ ATL项目的教程,但项目设置页面不再具有本文中提到的设置。
我想要做的是实现一个可以在C#中使用的C ++ DLL,如下所示:
MyComComponent myComp = new MyComComponent();
myComp.Register(new ClassWithCallbacks()) /* implements IMyCallback */
COM组件将以定时间隔调用提供的IMyCallback实例上的各种方法来获取信息。同样,C#代码可能会在需要时直接调用各种方法。
这种机制是通过(C ++端)轮询C#端或C#端报告回C ++端来监视应用程序。
答案 0 :(得分:1)
您可以从Walkthrough: Creating a COM Server Using Text Editor开始。它显示了如何使用COM属性而不是IDL来实现它,但为了您的目的,这应该足够了。
如果你想要更多ATL样本,ATL General Samples部分有大量样本实现各种COM功能,包括进程内或进程外服务器,并使用IDL而不是属性。您可以下载任何一个并根据您的目的进行调整。我可能会从BEEPER开始。
与此同时,Interoperating With Unmanaged Code有很多关于托管方的信息,特别是涉及自定义编组,事件等更高级的内容时。