为MFC应用程序制作一个.net插件?

时间:2011-08-10 22:04:34

标签: c# .net com mfc c++-cli

我需要为MFC应用程序编写一个插件:
- 插件部署为dll。
- 在运行时,MFC应用程序将调用插件,插件显示自定义对话框 - 需要动态加载dll,如果更新了dll,则不应重新编译MFC应用程序。

我主要在.net中编码,在玩MFC之后,对我来说一切似乎都太奇怪了(没有事件/代表等)。我可以写一个MFC dll,但如果我能在.net中这样做,那么我愿意尝试一下。一个可能的解决方案是我可以编写一个C#dll并将其公开为COM。由于我对COM一无所知,这是我的问题:
- .net框架是否需要安装在客户端的机器上? - 可以从MFC应用程序动态加载COM吗? - 我读了一些关于用COM注册程序集的内容,这是否发生在客户端的机器上? (如果是,那么安装程序可能需要更新) - 在MFC应用程序中使用COM是否容易(这需要MFC开发人员修改其代码)

或者,如果在.net,COM和MFC之间建立连接有太多的努力,你会建议我在MFC中编码吗?感谢。

更新
我决定使用C ++ / CLI作为MFC和.Net之间的桥梁。可以从MFC应用程序调用混合C ++ / CLI dll,并且dll可以使用.net框架。因此,我可以在另一个DLL中使用C#编写UI,并且可以通过C ++ / CLI调用该DLL。

参考文献:

  1. Native and .NET Interoperability
  2. Integrate Windows Forms Into Your MFC Applications Through C++ Interop

1 个答案:

答案 0 :(得分:1)

  

.net框架是否需要安装在客户端的计算机上?

是框架工作必须安装在客户端的机器上

  

可以从MFC应用程序动态加载COM吗?

可以,MFC应用程序将动态加载你的DLL,只要你的类的公共接口没有改变就可以调用它而不需要更新

  

我读了一些关于用COM注册程序集的内容,这是否发生在客户端的机器上? (如果是,则可能需要更新安装程序)

是的,必须在客户端的计算机上注册.NET COM对象(或任何COM对象)。您可以使用Visual Studio中的构建设置项目来执行该操作

  

在MFC应用程序中使用COM是否容易(这需要MFC开发人员修改其代码)

它应该相当容易,但这对于MFC开发者而言更是一个问题

  

您建议我使用MFC进行编码

你知道C ++还是MFC?如果不是,那可能需要做更多的工作。

另一种选择是在C++/CLR中编写组件。它可以公开可以从MFC应用程序直接调用的无人函数/类。