适用于Windows的Objective C
在Windows平台上编写Objective-C的最佳方法是什么?
Cygwin和gcc?有什么方法可以将其集成到Visual Studio中吗?
沿着这些思路,有关于如何链接和使用Windows SDK进行此类操作的任何建议。它是另一种野兽,但是我知道我可以在Windows DLL中编写汇编和链接,使我可以访问这些调用,但是我不知道如何在不进行谷歌搜索和获得零碎指导的情况下进行此操作。
有没有人知道一个很好的在线或者书籍资源来做或者解释这些事情?
解决方案
回答
还:
The Cocotron is an open source project which aims to implement a cross-platform Objective-C API similar to that described by Apple Inc.'s Cocoa documentation. This includes the AppKit, Foundation, Objective-C runtime and support APIs such as CoreGraphics and CoreFoundation.
http://www.cocotron.org/
回答
扩展前面的两个答案,如果我们只想要Objective-C但不想要任何Cocoa框架,那么gcc可以在任何平台上工作。我们可以通过Cygwin使用它或者获取MinGW。但是,如果我们需要Cocoa框架或者至少它们的合理子集,那么GNUStep和Cocotron是最佳选择。
Cocotron实现了许多GNUStep不能实现的功能,例如CoreGraphics和CoreData,尽管我不能保证它们在特定框架上的实现有多完整。他们的目的是使Cocotron保持最新版本的OS X,以便任何可行的OS X程序都可以在Windows上运行。由于GNUStep通常使用最新版本的gcc,因此它们还增加了对Objective-C ++和许多Objective-C 2.0功能的支持。
我尚未使用GNUStep测试这些功能,但是如果我们使用的是足够新版本的gcc,则可以使用它们。几年前,我无法在GNUStep上使用Objective-C ++。但是,GNUStep几乎可以从任何平台进行编译。 Cocotron是一个非常以Mac为中心的项目。尽管可能在其他平台上进行编译,但它是XCode项目文件,而不是makefile,因此,我们只能在OS X上直接编译其框架。它还附带了有关在XCode上编译Windows应用程序的说明,任何其他平台。基本上,可以为Cocotron设置一个Windows开发环境,但是这不像为GNUStep设置一个那样简单,而且要靠自己,所以如果要在GNUStep上进行开发,GNUStep绝对是必经之路Windows,而不只是Windows。
就其价值而言,Cocotron已获得MIT许可,而GNUStep已获得LGPL许可。
回答
我对Cocotron项目有不同的感觉。我很高兴他们发布了源代码并进行了共享,但是我不认为他们正在以最简单的方式来做事情。
例子。
Apple已将源代码发布到Objective-C运行时,其中包括属性和垃圾回收。但是,Cocotron项目有自己的Objective-C运行时实现。为什么要重复努力呢?甚至还有一个Visual Studio Project文件,可用于生成objc.dll文件。或者,如果我们真的很懒,则可以从Windows上安装的Safari复制DLL文件。
他们也没有去利用CoreFoundation,后者也是由Apple开源的。我对此发表了一个问题,但没有得到答案。
我认为当前最好的解决方案是从多个来源(Apple,CocoTron,GnuStep)获取源代码并将其合并到我们需要的内容中。我们将不得不阅读大量的资料,但这将是值得的最终结果。
回答
如果我们只是想尝试,这里有一个适用于.NET(Windows)的Objective-C编译器:qckapp