c# – 使用托管代码中的非托管代码

前端之家收集整理的这篇文章主要介绍了c# – 使用托管代码中的非托管代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的项目是在MFC中开发的,这是一个未经编码的代码.现在我需要通过重用大多数MFC类在C#中创建一个类似的应用程序.

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

解决方法

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

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

这是一个完整的MSDN overview of COM Automation,包含示例项目的链接.

这里是一个simple but to-the-point CodeProject sample,它精确地演示了如何在.NET程序集中使用COM DLL.

伟大的pinvoke reference here.用于访问本机Win32 API.

编辑:另一个想法

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

猜你在找的C#相关文章