【问题标题】:Make a .net plugin for MFC application?为 MFC 应用程序制作一个 .net 插件?
【发布时间】:2011-10-24 12:15:23
【问题描述】:

我需要为 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,并且该 dll 可以由 C++/CLI 调用。

参考文献:

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

【问题讨论】:

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


    【解决方案1】:

    .net 框架需要安装在客户端的机器上吗?

    是的,框架必须安装在客户的机器上

    能否从 MFC 应用程序动态加载 COM?

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

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

    是的,.NET COM 对象(或任何 COM 对象)必须在客户端机器上注册。您可以使用 Visual Studio 中的构建设置项目来做到这一点

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

    这应该相当容易,但这更多是 MFC 开发人员的问题

    你会建议我在 MFC 中编写代码

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

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

    【讨论】:

    • 你是不是忘记填答案了?
    • @AZ,是的,我太早点击了保存,现在答案就在那里
    • 我知道 C++ 和 C++/CLI。 MFC,一点点。我对 C++/CLI 部分很好奇,所以我可以编译我的混合 dll 并且它可以被 MFC 应用程序用作任何其他 c++ dll 吗? (假设它只使用原生接口)
    • 是的,您的 C++/CLI 项目可以导出非托管类和函数,并且在其他应用程序中看起来就像一个普通的 C++ DLL。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    相关资源
    最近更新 更多