【问题标题】:Can managed and unmanaged C++/MFC be mixed in one dll?托管和非托管 C++/MFC 可以混合在一个 dll 中吗?
【发布时间】:2011-03-02 10:17:02
【问题描述】:

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

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

我们可以让 COM 引擎保持原样,但最好摆脱 COM 注册等,并拥有一个可使用的托管接口。如果此人的机器出现问题,COM 注册有时会导致支持问题。

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

【问题讨论】:

    标签: .net com mfc mixed-mode


    【解决方案1】:

    C++/CLI 两者都可以。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 这里没有 MFC 中的用户界面。我们主要使用 CString 和 CStringArray,偶尔使用 CArray。你知道有什么好的教程吗?
      • functionx.com/cppcli/index.htm - 在大多数情况下,一旦你学习了“CLI”部分,它就与 C++ 的 MFC 问题相同......
      • 我实际上想知道更多关于实际问题的信息 - 我应该创建一个 MFC dll 并添加 /clr 还是创建一个类库并标记非托管代码等。也感谢该链接。
      猜你喜欢
      • 2011-03-04
      • 2013-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      相关资源
      最近更新 更多