none
MFC工程支持CLR错误 RRS feed

  • 问题

  • 我有一个MFC程序,包含很多工程,现在想把主程序添加支持CLR,然后用C#开发GUI,但是编译的时候总出现error link 1215 元数据错误。请问怎样解决这个问题?不胜感谢。
    2016年12月18日 2:22

全部回复

  • 不推荐这样处理,现有的MFC工程添加CLR支持需要修改一些现有的代码,工作量可能有些大。

    如果只是缺少GUI,考虑用MFC提供的GUI功能实现。也不推荐MFC与C#互操作。


    专注于.NET ERP/CRM开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    2016年12月18日 16:23
  • Hi xpadvent,

    感谢在MSDN论坛发帖。

    >>我有一个MFC程序,包含很多工程,现在想把主程序添加支持CLR,然后用C#开发GUI,但是编译的时候总出现error link 1215 元数据错误。请问怎样解决这个问题?不胜感谢。

    这个问题是因为MFC native的程序和CLR .Net Framework编译出来的程序结构不同导致的。这种情况,我推荐你使用COM进行交互。或者你可以将MFC工程使用/clr编译。然后调用C#的程序集。

    这里有一篇文档,关于托管和非托管代码的交互。你可以参考一下。

    https://msdn.microsoft.com/en-us/library/x0w2664k.aspx

    希望对你有所帮助。

    Best Regards,

    Sera Yu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2016年12月19日 1:24
  • 感谢您的回复,我们的程序已经有用MFC自己的GUI实现,但是目前主流的软件界面都已经非常华丽,所以我打算预先研究用C#开发先进界面的问题,同时也是学习的过程。
    2016年12月19日 15:05
  • 非常感谢您的帮助,由于我是.Net的新手,之前只专注MFC,所以不太明白你说的用COM交互的问题,您能说的更具体些吗?

    还有您说的将MFC工程用/clr编译是什么意思。是不是工程属性添加/clr支持?我现在就是这样做的,还望您不吝赐教。

    2016年12月19日 15:09
  • >>非常感谢您的帮助,由于我是.Net的新手,之前只专注MFC,所以不太明白你说的用COM交互的问题,您能说的更具体些吗?

    还有您说的将MFC工程用/clr编译是什么意思。是不是工程属性添加/clr支持?我现在就是这样做的,还望您不吝赐教。

    COM是一个平台无关,分布式,面向对象的系统,用于创建可以交互的二进制软件组件。 COM对象可以用各种编程语言创建。 面向对象的语言,如C ++,提供了简化COM对象实现的编程机制。这样你可以通过COM对象实现托管代码和非托管代码之间的交互。

    这里有一篇示例,你可以参考一下。

    https://www.codeproject.com/articles/12673/calling-managed-net-c-com-objects-from-unmanaged-c

    我提供给你的文档就是帮助你编译现有的MFC程序以实现CLR。通过使用/ clr编译器开关仅重新编译一个模块,可以将完全由非托管函数组成的现有应用程序带到.NET平台。 此模块然后能够使用.NET功能,但仍然与应用程序的其余部分兼容。 这样,应用程序可以逐步,逐块转换为.NET平台。 甚至可以在同一文件中逐个函数地在托管和非托管编译之间进行决定。

    https://msdn.microsoft.com/en-us/library/ms235211.aspx

    希望对你有所帮助。

    Best Regards,
    Sera Yu


    MSDN Community Support
    Please remember to click "Mark as Answer" the responses that resolved your issue, and to click "Unmark as Answer" if not. This can be beneficial to other community members reading this thread. If you have any compliments or complaints to MSDN Support, feel free to contact MSDNFSF@microsoft.com.

    2016年12月21日 6:16