用 C# 重写 MFC DLL?

Posted

技术标签:

【中文标题】用 C# 重写 MFC DLL?【英文标题】:Rewrite MFC DLL with C#? 【发布时间】:2011-10-27 16:27:43 【问题描述】:

我有一个我用 C++ MFC 编写的插件 DLL,它由一个可能用 MFC 用 C++ 编写的第 3 方应用程序加载。我的 DLL 有一个 GUI 界面并且基于 CWinApp;我想我的插件的消息泵以某种方式与主应用程序的消息泵合作(?)我相信我的 DLL 可能是通过 LoadLibrary 加载的,并通过调用我的 DLL 中的导出函数来启动。我的插件调用第 3 方应用程序通过我的 DLL 链接的静态库公开的函数和类。

这很好,但与使用 WinForms 和 C# 相比,使用 MFC/C++ 令人沮丧。所以我想知道是否可以让我的 DLL 不使用 MFC,而是使用 winforms 和 C#?有什么办法可以奏效吗?我在想象我猜是用 C# 编写的 DLL,它导出了一个从 3rd 方应用程序调用的函数,然后启动了一个 winforms 应用程序?此外,我的 DLL 需要链接到静态 C++ 库才能与第 3 方应用程序互操作。那可以从C#访问吗?或者,如果不能直接实现,也许我可以编写某种包装器?

【问题讨论】:

【参考方案1】:

最简单的方法是用 C++ dll 包装 C# dll。只需在托管 C++ 中创建一个 shell,它接受需要从主程序处理的任何调用。然后它可以调用 C# dll 并让它处理所有工作。

【讨论】:

以上是关于用 C# 重写 MFC DLL?的主要内容,如果未能解决你的问题,请参考以下文章

保护 DLL 的源代码

MFC dll 中的访问冲突(用 C++/CLI 包装)从 C# 程序开始

C#调用DLL问题

MFC 中的单选按钮(重写)

重写MFC的CSliderCtrl 控件

C# 隐藏方法和重写方法