如何将Cocoa/Mac应用程序移植到Windows?

Ron*_*Ron 5 windows macos port

如何将Cocoa/Mac应用程序移植到Windows?我的意思是你会怎么做?假设应用程序是用Objective-C和Cocoa编写的,没有任何花哨的东西,没有可以考虑的"引擎",等等.

从头开始重写?我不认为Mac和Windows代码库之间会有很大的重叠,对吗?

Chr*_*cke 6

我对cocotron有疑问。从 cocotron 网站来看,尚不清楚 cocotron 实际上已经做好生产准备。我怀疑可以开始新的应用程序开发并不断使用 cocotron 来动态维护和测试 Windows 构建。但将其改造到现有项目中可能是一项艰巨的任务。除了 gnustep 之外,也没有 Cocotron 的替代品。

跨平台开发的实用方法涉及使用 C 或 C++ 一次性开发应用程序的非 GUI 组件。然后使用像 QT 这样的跨平台 GUI 库 - 它非常擅长在可能的情况下生成和使用本机 UI,或者在不可能的情况下伪造它。请访问 qt.nokia.com 并下载适用于 Windows 和 Mac 的最新版本的 QTCreator - 查看相同的 QT 应用程序在两个平台上的外观和感觉如何,非常令人信服。

如果 QT 没有提供足够原生的解决方案,那么您需要开发两次 GUI:一次在 Cocoa 中,一次在 Win32 中。当然,cocoa GUI 是 Objective C 语言,Win32 GUI 是 C/C++ 语言。

您的非 GUI 应用程序代码将 - 用 C++ 编写 - 无法直接调用 Objective-C,但编写在 .mm 文件中实现的填充类并不难 - 提供 C++ 接口,并包装对 Objective C 对象的访问或班级。

您还必须想出 Windows 上 CoreData 的替代方案 - 也许是 sqlite?鉴于 XCode 集成了对 sqlite 框架的支持,并且测试多个代码路径是更多的工作 - 也许放弃 CoreData 以支持公共层是更好的方法?


Yan*_*min 2

Objective C 的问题是它对 OS X 以外的任何平台的支持都非常差。您可以尝试使用 Cocotron 但我不认为它已经准备好投入生产。

为了可移植性,需要重写。通过明智地使用标准 C 或 C++ 作为应用程序的“核心”,您仍然可以实现特定于平台的 GUI 代码。如果你不喜欢维护两个 GUI,你也可以尝试使用Qt等工具包