我已经了解了跨平台设计的一些信息。然而,我无法找到一个问题的答案。
我想要做的是在Delphi(Windows)和X-Code(Mac)中设计我的UI,程序的底层内容是与操作系统无关的C ++代码。这有可能实现吗?我看到很多关于跨平台编译器,框架和GUI工具的讨论,但我真的希望保持接口100%原生。
如果这是一个荒谬的问题,请原谅我,但我对编程和学习的世界相对较新。我公司在过去的15年中开发了大量用于Windows的Delphi应用程序目录,Delphi是去年大部分时间里用的。
答案 0 :(得分:4)
如果您习惯使用Object Pascal,请查看FreePascal
编译器和Lazarus
这是一个免费的跨平台IDE(适用于Windows,Linux,Mac OS X)。
答案 1 :(得分:3)
你应该看一下wxWidgets http://www.wxwidgets.org/来编程100%-native。
从我的观点来看,我无法看到为两个(或更多)目标平台使用两个不同且特定的gui设计器的好处。如果平台特定部分在您的体系结构中明确分开,则应该很容易共享代码。 wxWidgets使您能够在两个平台中使用相同的gui定义,而不会丢失原生角色。
就个人而言,我不再使用C ++进行UI设计了。但是你为什么要使用两个IDE呢?我建议使用一种更抽象的语言(比如带有Netbeans / Eclipse的Java,或者甚至更好的带有VS / Blend的C#/ .Net)用于这个UI /事件/交互的东西,只保留原生优化二进制代码中的某些特定部分。
.Net / Mono可以为ui风格使用不同的工具包。今天,在用户体验和外观环境中“本土化”确实意味着遵循系统特定的指导方针,我认为。 这可以通过视图和adpaters达到(有关某些设计模式,请参阅google)。 外观和感觉只是设计应用程序的一个点,它也可以是原生外观风格。在WPF中,世界句柄仅用于主机窗口(以及使用Windows窗体的一些遗留兼容性原因),但如果您像以前的win-api-one那样设置应用程序样式,用户将不会感觉到差异。
Qt还为C ++世界提供了一种独立于平台的方法 - 但并不是真正的本地方法。 Qt使用原生外观(如果需要)绘制自己的控件,并且还可以选择在不同平台之间使用/共享UI的一个定义。
答案 2 :(得分:1)
您的问题无论如何都不荒谬 - 您正在寻找解决我们多年来一直处理的问题的解决方案 - 如何实现跨平台兼容性和代码重用。但也许有一些要点需要澄清:
正如其他人所说,C ++并不是唯一的“操作系统不可知”语言 - 实际上大多数语言都是“操作系统不可知” - 通常不是(也可能不是)操作系统不可知的是编译器,GUI库等。 Pascal,C ++,Python,C#,Java和许多其他人都有各种操作系统的SDK,其中大部分都是开源的。
如果出于某种原因你使用C ++,请查看Embarcedaro C ++ - 使用C ++而不是Object Pascal的Delphi克隆。
IMO你应该调查Qt:http://doc.qt.nokia.com/latest/index.html - Qt是一个优秀的'OS不可知'框架,包括GUI小部件以及许多其他功能强大的库,几乎涵盖整个范围现代PC计算。
尽管c ++是Qt开发的本地语言,但是有很多“语言绑定”可用于使Qt编程与其他语言一起使用。 (根据绑定实现支持不同程度的功能)我理解使用Lazarus对Qt有一个Object Pascal语言绑定 - 我还没有尝试过,但听起来很有趣。
另外,请注意: 将GUI与应用程序的“底层内容”区分开来,使其与操作系统无关在复杂的应用程序中非常具有挑战性 - 我认为一个好的起点是阅读MVC范例。
HTH