移植到Linux,还是为MFC编写包装器?

时间:2011-08-15 14:50:41

标签: c++ qt mfc

是否更容易分离程序的核心功能并将其移植到Linux,或者围绕MFC功能编写包装以使原始MFC程序在Linux中运行?

示例:

采用基于MFC应用程序的基本对话框(多个对话框窗口),让它在Linux命令行下运行,无需修改核心分析代码。主要目标是不修改分析代码。考虑到这一点,编写程序的命令行版本,该版本使用MFC应用程序用于分析代码的相同文件。编写与分析代码中使用的MFC类和函数完全相同的代码。实际上,只需从这些类的MFC源代码开始,删除所有Microsoft特定的东西(MFC,ATL等)并将其用作包装代码。

获取核心分析代码,将其插入Qt命令行项目。对于任何MFC或Win32功能,请将其替换为Qt或STL / Boost中的等效跨平台兼容功能。

2 个答案:

答案 0 :(得分:3)

尝试针对 Winelib 进行编译,您不必重写大部分功能。

根据您的意见,鉴于时间和资源,我肯定会将源代码分成明确定义的层:

依赖于OS /平台的层,
操作系统抽象层,
独立于OS的中间件&
UI图层

这是在任何软件应用程序中都会遇到的最基本的分层架构。那样每当我需要将它移植到新的操作系统/平台时,我只需要写一个OS/platform dependent layer并且我所有其他层保持不变。同样,当需要更改UI框架时,我可以轻松修改UI layer,其余的堆栈保持不变。

当然,这样的解决方案需要充足的时间和资源,但一旦你做了,你的生活将来会更容易。

答案 1 :(得分:1)

有足够的时间和资源我会做第二种选择,在我看来这是一种更清洁的方法。如果需要快速和肮脏的解决方案,您可以遵循@Als的建议并使用Winelib。

顺便说一句,Qt和STL / Boost是多平台库,因此将来你可以将“移植”版本用作多平台版本,在Windows上部署它并摆脱MFC依赖(优点:只有一个)要处理的代码库;缺点:Qt是一个非常重的依赖项。)