使用托管代码中的非托管代码

Har*_*sha 6 c# dll mfc unmanaged managed

我的项目是在MFC中开发的,这是一个未经编码的代码.现在我需要通过重用大多数MFC类在C#中创建一个类似的应用程序.

是否可以直接从MFC dll导出class/struct/enum,这样我就可以使用dllimport在我的C#中导入它并使用它.

Pau*_*sik 5

是的,很有可能.你只需要小心这些类型.许多翻译非常好,但有些是古怪的.

您要搜索的概念的名称是COM interop.请参阅此处获取入门教程.当然,MFC DLL必须支持从.NET访问COM.您需要使用支持的适当COM接口重建MFC DLL.

以下是COM AutomationMSDN概述,包含示例项目的链接.

这里有一个简单而又重要的CodeProject示例,它演示了如何在.NET程序集中使用COM DLL.

这里有很棒的pinvoke参考.用于访问本机Win32 API.

编辑:另一个想法

如果您无法重建MFC DLL(您没有IDE的源版本或正确版本),您可以在MFC或原始C/C++中创建COM"包装"DLL,它将导入标准中的MFC DLL,以COM前的方式,然后公开您需要的对象和方法.