移植到Linux,或者为MFC编写包装器
Port to Linux, or write wrappers for MFC?
是分离程序的核心功能并将其移植到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的依赖(优势:只有一个代码库;相关文章:
- 如何在c++17中制作一个模板包装器/装饰器
- std::vector的包装器,使数组的结构看起来像结构的数组
- 如何在c++迭代器类型中包装std::chrono
- 是否可以用"iostream"包装现有的TCP/OOpenSSL会话
- C++ MFC Libraries in Travis CI
- 用pybind11包装C++抽象类时出错
- 为左值和右值的包装器实现C++范围
- C结构,其指针将被包装在unique_ptr中
- 如何包装第三方DLL在R中使用
- 在类型和包装器之间reinterpret_cast是否安全<Type>?
- 将 N-arg 函数包装到另一个函数中
- 元组由 Swig 生成的 Python 包装器返回,用于C++向量
- 包装一个对象并假装它是一个 int
- 使用 Python Extension API 包装复杂C++类
- 外壳包装器句柄/执行交互式命令管道C++ UNIX
- 从 bmp 文件数据创建 MFC CBitmap
- 包装C++类时不完整的类型 GLFWwindow
- 将互操作 HwndSource 包装在 c++/cli 中,以用于本机 c++/MFC 应用程序
- 移植到Linux,或者为MFC编写包装器
- 如何仅使用直接 WinAPI 将独立于设备的位图放入 Windows 剪贴板?(无 MFC 或其他包装器)