我想构建一个可以在Windows和Mac OS X上运行的应用程序.我也希望它能够利用它运行的平台所提供的最好的框架,API等等.有没有办法做这不需要编写Objective-C代码然后编写C#代码?我一直在考虑将C++作为替代方案,但我想知道是否还有其他任何东西.该应用程序将基于GUI(虽然我不知道它将做什么)
-G.
你很早就想到了可移植性 - 事实之后,将它"搞砸"是非常困难的.
有各种各样的跨平台工具包可供使用,但恕我直言所有这些都没有在所有支持的平台上提供"原生"外观和感觉.在Mac(我使用的)上,这些套件的支持者总是想提到他们正在使用原生控件.这是一个好的开始,但这不是整个旅程.Apple的人机界面指南解决的其他问题包括如何安排控件,如何设置按钮标签,应使用哪些标准快捷键等.
即使是微软也必须学习使用命运多Word的Word 6.0 for Mac来尝试编写跨平台GUI的危险.
恕我直言,更好的方法是使用MVC设计,模型层使用标准的可移植C++编写,视图和控制器层使用每个平台的本机工具包.对于Mac版本,Carbon和C++曾经是一个有趣的选项,现在不再支持了,所以你想要使用Cocoa,在视图中使用Objective-C,在控制器中使用Objective-C++来弥合语言差距.您的Windows版本同样可以将您的模型编译为"托管C++",并将任何.NET语言用于控制器和视图.
看看Real Studio吧.认真.您可以在Real Studio中编写应用程序,并将其部署在Windows,Mac OS X和Linux上.
编辑:Real Studio现在是Xojo.
wxWidgets是一个跨平台的C++库,是一个实用的选择.但我同意Sherm的观点 - 所有跨平台库都会为原生应用程序创建一个较差的UI.
每个具有不同UI语义(按钮顺序等)的操作系统都会变得更难,所以当你可以获得良好的外观时,通过一个视图层在每个平台上获得'感觉'几乎是不可能的.
根据您最终的操作,您可以更好地找到Web界面(例如,在您的应用中嵌入Web服务器并将HTTP页面提供给浏览器).你避免了L&F问题!
或者,你可以决定你将拥有一个完全非标准的L&F,并选择像wxWidgets或Tcl/Tk这样的东西.