【问题标题】:How would I mix up C++ with VALA我将如何将 C++ 与 VALA 混合
【发布时间】:2012-01-11 09:43:36
【问题描述】:

我需要在 C++ 中为跨平台编写 GUI 应用程序,但由于大多数 C++ 的 GUI 库有点乏味,而且我对 C#/.NET 非常熟悉,我发现代码 Vala 代码与 GTK 非常有趣并且比较容易比较与其他方式。那么我将如何将 VAlA 与 C++ 混合。我的意思是在 C++ 中使用 VLA 作为前端和代码的其余部分。

【问题讨论】:

标签: c++ vala


【解决方案1】:
  1. 您可以从 C++ 调用由 vala 生成的代码,但它是纯 C 语言,从 C++ 中使用起来非常痛苦。
  2. Vala 只能调用 C 代码,因此您必须将所有 C++ 代码包装在 extern "C" 中。
  3. 在 C++ 中通过 Gtkmm 使用 Gtk 并不比在 Vala 中使用 Gtk 难,Qt 也不难。
  4. Qt 是唯一真正跨平台的选项。 Gtk 现在可以在 MacOS X 上原生运行,但仍然不够稳定。而且 Qt 也适用于大多数智能手机平台,而 Gtk 则不行。
  5. Vala 与 C# 不太一样,但也有一些 quriks。

一般来说,我建议改用 Qt。

【讨论】:

  • wxwidget 呢?你会怎么想?
  • @Gryphes:我没用过,但是从我看到的情况来看,wxWidget 的设计灵感来自于 MFC 设计,这太可怕了,已经过时了。它不难使用,但缺乏灵活性。
  • @Gryphes:此外,wxWidget 也不适用于智能手机平台。 Qt 具有适用于 Android、iPhone、Windows CE 和 Symbian 的端口。
  • @jan-hudec 现在有一个足够成熟的 wxQt 端口来使用 Qt 将 wxWidgets 移植到这些设备上。
  • 这是迄今为止更好的答案。实际上回答了这个问题然后提出了一个替代方案
【解决方案2】:

Vala 编译为 C,大量使用 GObject 类型系统。您可以使用 glibmm 来使用它,它是 C++ 中 gtkmm 的一部分。但是你也可以只使用 gtkmm(即使用 GtkBuilder)然后......

【讨论】:

    【解决方案3】:

    它可能无法完全回答您的问题,但是如果您使用mono 将C# 嵌入到c++ 中,您可以直接在windows 中使用GTK#(它也可以在mac 和linux 中编译和运行)。

    然后,您将能够将 C#/GTK# 用于前端,并在 c++ 中编写其余部分。

    【讨论】:

    • 谢谢,但我不是在寻找替代解决方案。我真的需要完成这项工作,或者至少避免使用 Microsoft 技术来开发开源/免费应用程序。 :P
    【解决方案4】:

    如果 QT 满足您的要求,您可以使用它。 Qt 是一个跨平台的应用程序和 UI 框架,带有用于 C++ 编程的 API。 http://developer.qt.nokia.com/doc/qt-4.8/gettingstartedqt.html

    【讨论】:

    • 不回答问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 2011-02-12
    相关资源
    最近更新 更多