在Linux上运行MFC程序

E.F*_*tas 17 c++ qt mfc stl

我有一个相当大的基于MFC的程序.我的任务是让它在Linux上运行.我已经解释过这需要将程序重写为带有STL的直接C++(更多工作),或者重写Qt/C++(更少的工作).我现在被告知我需要编写包装器以使每个MFC类在Linux中工作并使用预处理器指令仅编译Linux或Windows中所需的内容.我解释说我们正在断开通信,而且我认为这比从头开始重写整个项目要多得多(我不需要转换为Qt).

有什么好的论据可以帮助解释这个问题吗?我错了吗?

Rei*_*ica 15

如果您不想完全重写,可以尝试编译Winelib.大多数事情应该只是工作,然后因为你有源,你可以解决没有的部分.

  • Winlib没有实现MFC; 你必须在Linux上针对Winelib编译MFC源代码,这在法律上是可疑的.有关详细信息,请参见http://www.winehq.org/docs/winelib-guide/mfc.只是在没有重新编译的情况下在WINE上运行它就不那么成问题了. (5认同)

Cli*_*ord 7

显而易见的解决方案是在WINE上运行代码不变并且不重新编译.

一个简单(kludgy)的解决方案是在Linux系统上运行整个Windows VM,并将该应用程序部署为虚拟硬盘驱动器,但这需要Windows许可证,与将Windows系统简单地连接到Linux网络几乎没有什么不同.

如果你必须重写,那么对于MFC开发人员而言,wxWidgets可能比Qt更熟悉.

这是一篇关于将MFC应用程序移植到Linux 的文章,它考虑使用GTK +,Qt和wxWidgets.它还讨论了为什么你应该考虑并在任何这些选项之前尝试WINE.作者讨论了有关该主题的未来文章,但自2004年以来似乎没有进一步的写作.