在Linux上运行MFC程序

时间:2011-08-04 17:20:43

标签: c++ qt stl mfc

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

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

3 个答案:

答案 0 :(得分:16)

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

答案 1 :(得分:7)

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

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

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

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

答案 2 :(得分:4)

MFC和ATL的源代码总共超过500000行代码,此代码的大部分功能实际上是由Windows API本身提供的。一天能写多少行代码?即使您只实现了一小部分MFC,您要求做的事情的规模也是不切实际的。