当前位置:  开发笔记 > IOS > 正文

适用于Windows的Objective C.

如何解决《适用于Windows的ObjectiveC.》经验,为你挑选了9个好方法。

在Windows平台上编写Objective-C的最佳方法是什么?

Cygwin和gcc?有没有办法可以将它集成到Visual Studio中?

沿着这些方向 - 是否有任何关于如何链接和使用Windows SDK的建议.它是一个不同的野兽,但我知道我可以在Windows DLL中编写汇编和链接,让我可以访问这些调用,但我不知道如何做到这一点,没有谷歌搜索和零碎的方向.

是否有人知道一个好的在线或书籍资源来做或解释这些事情?



1> Michael Buck..:

扩展前两个答案,如果您只想要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肯定是要走的路. Windows而不是Windows.

对于它的价值,Cocotron是根据MIT许可证授权的,GNUStep是根据LGPL许可的.



2> teshguru..:

可以在Windows环境中使用Objective C. 如果你按照这些步骤,它应该工作得很好:

    访问GNUstep网站并下载GNUstep MSYS Subsystem(MSYS for GNUstep),GNUstep Core(GNUstep库),以及GNUstep Devel

    下载这些文件后,按顺序安装,否则您将遇到配置问题

    导航到C:\GNUstep\GNUstep\System\Library\Headers\Foundation1并确保Foundation.h存在

    打开一个命令提示符并运行gcc -v以检查是否GNUstep MSYS已正确安装(如果找不到文件错误,请确保该bin文件夹GNUstep MSYS位于您的文件夹中PATH)

    使用这个简单的"Hello World"程序来测试GNUstep的功能:

    #include 
    
    int main(void)
    {
        NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
        NSLog(@"Hello World!.");
        [pool drain];
     return;
    }
    

    返回命令提示符并cd保存"Hello World"程序,然后编译它:2

    gcc -o helloworld.exe .m -I /GNUstep/GNUstep/System/Library/Headers -L /GNUstep/GNUstep/System/Library/Libraries -std=c99 -lobjc -lgnustep-base -fconstant-string-class=NSConstantString
    

    最后,从命令提示符处键入helloworld以运行它

一切顺利,与Objective-C玩得开心!


注意:

    我使用了默认安装路径 - 相应地调整命令行

    确保您的文件夹路径与我的相似,否则您将收到错误



3> amrox..:

也:

Cocotron是一个开源项目,旨在实现类似于Apple Inc.的Cocoa文档所描述的跨平台Objective-C API.这包括AppKit,Foundation,Objective-C运行时和支持API,如CoreGraphics和CoreFoundation.

http://www.cocotron.org/


Cocotron项目旨在从XCode交叉编译,而不是在Windows上编写并在那里编译.
这不是一个好的答案,我甚至不确定为什么OP选择这个作为"答案",因为CoCotron适用于Mac而OP需要基于Windows的解决方案.

4> 小智..:

WinObjC?适用于iOS的Windows Bridge(以前称为"Project Islandwood").

Windows Bridge for iOS(也称为WinObjC)是一个Microsoft开源项目,为Visual Studio/Windows提供Objective-C开发环境.此外,WinObjC还支持iOS API兼容性.虽然最终版本将在今年秋季晚些时候发布(允许桥接器利用随即将推出的Visual Studio 2015更新提供的新工具功能),

现在处于当前状态的开源社区可以使用该桥.从现在到秋天.iOS桥作为MIT许可下的开源项目.鉴于该项目的雄心壮志,iOS开发人员可以轻松地在Windows上构建和运行应用程序.

Salmaan Ahmed在Windows Bridge for iOS上有一篇深入的帖子http://blogs.windows.com/buildingapps/2015/08/06/windows-bridge-for-ios-lets-open-this-up/讨论了编译器,运行时,IDE集成以及桥是什么和不是什么.最重要的是,iOS桥的源代码现在正在GitHub上运行.

iOS桥接器支持为x86和x64处理器架构构建的Windows 8.1和Windows 10应用程序,很快我们将添加编译器优化和ARM支持,从而增加了移动支持.



5> Matthieu Cor..:

我对Cocotron项目的看法很复杂.我很高兴他们发布了源代码和共享,但我不觉得他们是以最简单的方式做事.

例子.
Apple已将源代码发布到objective-c运行时,其中包括属性和垃圾收集.然而,Cocotron项目有自己的objective-c运行时实现.为什么要费心去复制呢?甚至还有一个Visual Studio Project文件可用于构建objc.dll文件.或者,如果你真的很懒,你可以从Windows上的Safari安装中复制DLL文件.

他们也没有费心去利用CoreFoundation,后者也是Apple开源的.我发布了一个关于此的问题,但没有得到答案.

我认为目前最好的解决方案是从多个来源(Apple,CocoTron,GnuStep)获取源代码并将它们合并到您需要的地方.你必须阅读很多来源,但最终的结果是值得的.


我不认为您理解终止是如何工作的,这不是他们可以同时对所有人做的事情,代码是根据条款许可的,并且可以无限期地在这些条款下使用.可能发生的事情是,Apple可以挑选他们认为违反许可证的个人/公司.FSF已经违反了GPL,你真的认为Apple对开发人员比FSF更友好吗?如果您认为这些条款无关紧要且毫无意义,我相信您可以说服Apple合法将其取出.
应该注意的是,Apple与FSF合作改变了APSL,并且FSF认为APSL 2.0版是免费软件许可证.http://www.gnu.org/philosophy/apsl.html
从我的角度来看(作为在专利产品中处理过BSD,LGPL,麻省理工学院和其他许可证的人),Apple的许可证比GPL更为严格 - 坦率地说这是一个痛苦的屁股.如果我可以获得BSD,MIT或APSL,我宁愿与GPL合作.
很抱歉没有回答关于该组的问题,总结一下:APSL很糟糕,运行时和CF都在它们之下.

6> Ephemera..:

我知道这是一篇非常古老的帖子,但我找到了一个最近才可用的解决方案,并在Windows平台上启用了几乎所有的Objective-C 2.0功能.

随着gcc 4.6的出现,Objective-C 2.0编译器中添加了对Objective-C 2.0语言功能(块,点语法,合成属性等)的支持(有关完整详细信息,请参阅发行说明).他们的运行时也已更新,几乎与Apple自己的Objective-C 2.0运行时相同.简而言之,这意味着(几乎)任何将在Mac上与Clang合法编译的程序也将使用gcc 4.6进行编译而无需修改.

作为旁注,一个不可用的功能是字典/数组/等文字,因为它们都被硬编码成Clang以使用Apple的NSDictionary,NSArray,NSNumber等类.

但是,如果你很高兴没有Apple的广泛框架,你可以.正如其他答案中所述,GNUStep和Cocotron提供了Apple类库的修改版本,或者您可以编写自己的(我的首选选项).

MinGW是在Windows平台上获得GCC 4.6的一种方式,可以从MinGW网站下载.确保在安装时包含C,C++,Objective-C和Objective-C++的安装.虽然是可选的,但我还是建议安装MSYS环境.

安装完成后,可以编译Objective-C 2.0源代码:

gcc MyFile.m -lobjc -std=c99 -fobjc-exceptions -fconstant-string-class=clsname (etc, additional flags, see documentation)

MinGW还支持使用-mwindows标志编译本机GUI Windows应用程序.例如:

g++ -mwindows MyFile.cpp

我还没有尝试过,但我想如果你将Objective-C类包装在最高层的Objective-C++中,你应该能够在一个Windows应用程序中成功地将本机Windows GUI C++和Objective-C交织在一起.



7> James Ko..:

查看WinObjC:

https://github.com/Microsoft/WinObjC

这是Microsoft的一个官方开源项目,它与Visual Studio + Windows集成.



8> 小智..:

如果您只是想进行实验,那么这里有一个针对.NET(Windows)的Objective-C编译器:qckapp



9> Aaron Stainb..:

您可以获得一个可与Windows一起使用的目标c编译器,并在此处与Visual Studio 2008\2010一起使用.

open-c flite

只需下载最新的来源.您不需要构建所有CF-Lite,而是有一个名为objc.sln的解决方案.您将需要修复一些包含路径,但随后它将构建得很好.甚至还有一个测试项目,所以你可以看到一些Objective-c .m文件正在编译并在visual studio中工作.一件令人伤心的事情是它只适用于Win32而不是x64.有一些汇编代码需要为x64编写才能支持它.

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有