托管和非托管C ++ / MFC可以混合在一个DLL中吗?

时间:2010-06-10 22:16:43

标签: .net com mfc mixed-mode

以前我们在MFC(VC6),VB6和C#应用程序中都有软件需要调用用C ++(和MFC)编写的相同引擎。引擎需要C ++来提高速度。当时我们决定使用COM作为接口,因为所有三个都可以在编组等方面使用最少的问题。

我们的MFC应用程序现已弃用,我们最近决定转储VB6,所以我们剩下的就是C#。

我们可以按原样保留COM引擎,但是远离COM注册等会很好,并且可以使用托管界面。如果此人的机器出现问题,COM注册偶尔会导致支持问题。

是否可以使用现有的非托管C ++ / MFC和.NET前端接口创建一个dll?

2 个答案:

答案 0 :(得分:3)

您可以拥有一个在内部使用MFC类的C ++ / CLI DLL。使用C ++ / CLI创建混合模式DLL的一个很好的优点是,您可以在DLL中的任何位置使用本机C ++(遵循C ++ / CLI规则)并且“它只是工作”。

然而,这里的目标应该是提供可以从C#应用程序调用的漂亮,干净,托管的包装器。

话虽如此 - 您很可能希望避免将MFC用于任何用户界面元素。虽然可以在C#中托管MFC内容,反之亦然,但它通常是有问题的 - 您最好只使用C ++ / CLI将C ++引擎(时间关键操作)和遗留代码封装在漂亮,干净的托管包装中。

答案 1 :(得分:0)

C ++ / CLI可以做到这两点。