创建跨平台的Windows,Mac OS X应用程序

arm*_*ahg 32 .net c# cocoa objective-c realbasic

我想构建一个可以在Windows和Mac OS X上运行的应用程序.我也希望它能够利用它运行的平台所提供的最好的框架,API等等.有没有办法做这不需要编写Objective-C代码然后编写C#代码?我一直在考虑将C++作为替代方案,但我想知道是否还有其他任何东西.该应用程序将基于GUI(虽然我不知道它将做什么)

-G.

She*_*ley 49

你很早就想到了可移植性 - 事实之后,将它"搞砸"是非常困难的.

有各种各样的跨平台工具包可供使用,但恕我直言所有这些都没有在所有支持的平台上提供"原生"外观和感觉.在Mac(我使用的)上,这些套件的支持者总是想提到他们正在使用原生控件.这是一个好的开始,但这不是整个旅程.Apple的人机界面指南解决的其他问题包括如何安排控件,如何设置按钮标签,应使用哪些标准快捷键等.

即使是微软也必须学习使用命运多Word的Word 6.0 for Mac来尝试编写跨平台GUI的危险.

恕我直言,更好的方法是使用MVC设计,模型层使用标准的可移植C++编写,视图和控制器层使用每个平台的本机工具包.对于Mac版本,Carbon和C++曾经是一个有趣的选项,现在不再支持了,所以你想要使用Cocoa,在视图中使用Objective-C,在控制器中使用Objective-C++来弥合语言差距.您的Windows版本同样可以将您的模型编译为"托管C++",并将任何.NET语言用于控制器和视图.

  • 我建议远离Carbon/C++ for Mac版本,因为Apple没有将Carbon移植到64位.虽然现在可能无关紧要,但它表明Cocoa/Objective-C是Mac编程IMO的未来. (9认同)
  • 不幸的是,GUI应用程序的大约75%的逻辑都在GUI中,而不是模型(我已经在自己的应用程序中验证了这一点). (6认同)
  • 嗯,模式更复杂,你必须两次编写应用程序的更大部分.理论上不错,但需要付出代价. (2认同)

Rob*_* S. 16

看看Real Studio吧.认真.您可以在Real Studio中编写应用程序,并将其部署在Windows,Mac OS X和Linux上.

编辑:Real Studio现在是Xojo.

  • 令我惊讶的是,这是几年来唯一针对所有3个选项的真正选择. (2认同)

Jam*_*ove 6

wxWidgets是一个跨平台的C++库,是一个实用的选择.但我同意Sherm的观点 - 所有跨平台库都会为原生应用程序创建一个较差的UI.

每个具有不同UI语义(按钮顺序等)的操作系统都会变得更难,所以当你可以获得良好的外观时,通过一个视图层在每个平台上获得'感觉'几乎是不可能的.

根据您最终的操作,您可以更好地找到Web界面(例如,在您的应用中嵌入Web服务器并将HTTP页面提供给浏览器).你避免了L&F问题!

或者,你可以决定你将拥有一个完全非标准的L&F,并选择像wxWidgets或Tcl/Tk这样的东西.