我需要为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。
参考文献:
答案 0 :(得分:1)
.net框架是否需要安装在客户端的计算机上?
是框架工作必须安装在客户端的机器上
可以从MFC应用程序动态加载COM吗?
可以,MFC应用程序将动态加载你的DLL,只要你的类的公共接口没有改变就可以调用它而不需要更新
我读了一些关于用COM注册程序集的内容,这是否发生在客户端的机器上? (如果是,则可能需要更新安装程序)
是的,必须在客户端的计算机上注册.NET COM对象(或任何COM对象)。您可以使用Visual Studio中的构建设置项目来执行该操作
在MFC应用程序中使用COM是否容易(这需要MFC开发人员修改其代码)
它应该相当容易,但这对于MFC开发者而言更是一个问题
您建议我使用MFC进行编码
你知道C ++还是MFC?如果不是,那可能需要做更多的工作。
另一种选择是在C++/CLR中编写组件。它可以公开可以从MFC应用程序直接调用的无人函数/类。