移植到Linux,或者为MFC编写包装器

Port to Linux, or write wrappers for MFC?

本文关键字:MFC 包装 或者 Linux      更新时间:2023-10-16

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

的例子:

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

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

尝试在Winelib上编译它,您将不必重写大部分功能。

根据您的评论,考虑到时间和资源,我肯定会将源代码分成定义良好的层:

操作系统/平台相关层,
操作系统抽象层,
独立于操作系统的中间件&
UI层

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

当然,这样的解决方案需要足够的时间和资源,但是一旦你这样做了,你以后的生活就容易多了。

如果有足够的时间和资源,我会选择第二种方法,对我来说这似乎是一种更干净的方法。如果需要一个快速的解决方案,你可以按照@Als的建议使用Winelib。

顺便说一下,Qt和STL/Boost是多平台库,所以在未来你可以使用"移植"版本作为多平台版本,在Windows上部署它,摆脱对MFC的依赖(优势:只有一个代码库;