我的项目是在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前的方式,然后公开您需要的对象和方法.