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

时间:2010-01-14 06:23:58

标签: windows macos port

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

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

4 个答案:

答案 0 :(得分:4)

我对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当然是客观C,即C / C ++中的Win32 GUI。

你的非gui应用程序代码 - 用c ++编写 - 不能直接调用Objective-C,但是编写shim类并不难,用.mm文件实现 - 提供c ++接口,并包装访问客观的c对象或类。

你也将不得不在Windows上找到CoreData的替代品 - 也许是sqlite?鉴于XCode已经集成了对sqlite框架的支持,并且测试多个代码路径,更多的工作 - 也许放弃CoreData以支持公共层是一种更好的方法?

答案 1 :(得分:2)

Objective C的问题在于它不是OS X的任何平台上的支持非常差。您可以尝试使用Cocotron,但我不认为它已准备好生产。

为了便于携带,重新编写是有序的。通过明智地使用标准C或C ++作为应用程序的“核心”,您仍然可以实现特定于平台的GUI代码。如果您不喜欢维护两个GUI,您还可以尝试使用Qt

等工具包

答案 2 :(得分:2)

根据您为cocoa应用程序使用的对象和框架,您可能可以使用gnustep,但最终结果对于Windows用户来说可能看起来很奇怪,并且开发环境可能会首先要设置有点困难。

答案 3 :(得分:1)

您知道Cocotron吗?看起来该项目可能已经陈旧,但无论如何这都是一个很好的起点。这是一个移植Core API的项目。

如果您的应用程序没有完全分离(即:一个MVC),那么唯一的解决方案是重写,我想。