【问题标题】:Info on CrossPlatform跨平台信息
【发布时间】:2011-07-28 20:58:10
【问题描述】:

我查看了一些关于跨平台设计的信息。但是,我找不到一个问题的答案。

我想做的是在 Delphi (Windows) 和 X-Code (Mac) 中设计我的 UI,程序的底层内容是与操作系统无关的 C++ 代码。这有可能实现吗?我看到很多关于跨平台编译器、框架和 GUI 工具的讨论,但我真的希望保持界面 100% 原生。

如果这是一个荒谬的问题,请原谅我,但我对编程和学习的世界还比较陌生。我的公司有一个在过去 15 年中开发的用于 Windows 的 Delphi 应用程序的广泛目录,而 Delphi 是我去年大部分时间都在使用的地方。

【问题讨论】:

  • Delphi 是非跨平台的。这些只是空谈。
  • @Downvoter Delphi 是语言还是 Delphi 是 IDE? FPC 编译 Delphi 代码。在限制范围内。

标签: c++ delphi cross-platform


【解决方案1】:

如果您喜欢使用 Object Pascal,请查看FreePascal 编译器和Lazarus,这是一个免费的跨平台 IDE(适用于 Windows、Linux、Mac OS X)。

【讨论】:

  • 谢谢。我会调查的。
【解决方案2】:

您应该查看 wxWidgets http://www.wxwidgets.org/ 以了解 100%-native 编程。

从我的角度来看,我看不到为两个(或更多)目标平台使用两个不同且特定的 gui 设计器的好处。如果平台特定部分在您的架构中明确分离,那么共享代码应该很容易。 wxWidgets 使您能够在两个平台上使用相同的 gui 定义而不会丢失本机字符。

就我个人而言,我不会再使用 C++ 进行 UI 设计了。但是为什么要使用两个 IDE?我建议使用更抽象的语言(比如带有 Netbeans/Eclipse 的 Java,或者甚至更好的带有 VS/Blend 的 C#/.Net)来处理这个 UI/事件/交互内容,只在原生优化的二进制代码中保留一些特定部分。

.Net/Mono 可以为 ui 样式使用不同的工具包。今天,我认为,在 UX 和外观和感觉的上下文中“原生”确实意味着遵循系统特定的指导方针。 这可以通过视图和 adpaters 来实现(有关一些设计模式,请参阅 google)。 外观和感觉只是应用程序样式的一个要点,它也可以是原生外观样式。在 WPF 世界中,句柄仅用于主机窗口(以及一些使用 Windows 窗体的遗留兼容性原因),但如果您像以前的 win-api-ones 那样设置应用程序的样式,用户不会感觉到差异。

Qt 还为 C++ 世界提供了一种独立于平台的方法,但并不是真正的原生方法。 Qt 使用原生外观(如果需要)绘制自己的控件,并且还提供了在不同平台之间使用/共享 UI 定义的选项。

【讨论】:

    【解决方案3】:

    您的问题绝不是荒谬的——您正在寻找我们多年来一直在处理的问题的解决方案——如何实现跨平台兼容性和代码重用。但也许有几点你需要澄清:

    正如其他人所说,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 是一个优秀“与操作系统无关”的框架,其中包括 GUI 小部件以及许多其他强大的库,几乎涵盖了现代的整个范围电脑计算。

    尽管 c++ 是 Qt 开发的本地语言,但仍有不少“语言绑定”可用于使 Qt 编程与其他语言成为可能。 (根据绑定实现支持不同程度的功能)我知道有一个使用 Lazarus 的 Qt 的 Object Pascal 语言绑定 - 我还没有尝试过,但听起来很有趣。

    另外,请注意: 将您的 GUI 与应用程序的“底层内容”分开,使其与操作系统无关,这在复杂的应用程序中可能非常具有挑战性 -我认为阅读 MVC 范例是一个很好的起点。

    HTH

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      • 2011-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多