【问题标题】:Would Haxe work for creating libraries?Haxe 可以用于创建库吗?
【发布时间】:2010-12-16 06:11:56
【问题描述】:

我正在考虑使用 Haxe 的跨语言能力,但不确定它是否最适合这项任务。我将编写一个通用库,它应该能够在目标语言中使用并被记录(能够应用像 doxygen 这样的东西。)。换句话说,我想在 Haxe 中编写一个通用库,输出 c++ 代码(以及完成后的 java),并让其他程序员可以访问它。(不仅仅是 C+ 编译器可读)这是这项任务的最佳选择,还是我只为每种语言编写一个版本的库会更好?

【问题讨论】:

    标签: haxe


    【解决方案1】:

    当然有可能,尽管根据选择的平台可能会有些尴尬。

    在 JavaScript、neko 和 Flash 上,生成的代码非常接近原生代码,人们甚至可以在不知道它是在 Haxe 中生成的情况下使用它。

    在 PHP 上,恐怕我不太清楚它是如何工作的。但是有一些命名空间黑客有点尴尬,但我认为这些可以通过用手写代码包装库来解决。

    在 C++ 上,如果您不介意使用一些样板代码来启用反射,那么它几乎可以正常工作。它有一种处理构造函数的非标准方式,而且你应该非常小心,因为它附加了一个 gc,而且我不知道它处理外部代码持有它不知道的引用的效果如何。

    关于新目标 - C# 和 Java 将与本机代码 100% 互操作。大多数 Haxe 功能都映射到平台的本机功能中,委托除外。但是,如果您不在界面中公开委托,那也没关系。他们还将生成一些样板代码以在这些平台上启用快速反射,但如果您知道自己在做什么,会有办法禁用它。

    【讨论】:

    • 你能解释一下 C++ 中的“gc”是什么意思吗?
    • @Anderson 我的意思是垃圾收集 ;)
    • 我被这句话弄糊涂了:C# and Java will interoperate 100% with native code.这种情况下“本机代码”指的是什么?
    • 您知道我在哪里可以找到有关在 Java 中使用生成的 Haxe 库的更多信息(反之亦然?)
    • 您可以通过 gtalk 联系我,也可以通过 gmail dot com 联系我,我很乐意为您提供帮助。本机代码是指以宿主语言(Java 和 C# 代码)本机编写的代码
    【解决方案2】:

    Haxe 不是为编写跨语言库而设计的,尽管它可以做到,而且我已经看到了一些可以使用的示例:

    • polygonal,可用于 Haxe 和 AS3 的数据结构和物理引擎。
    • verb,基于 NURBS 的 CAD 库,可在 Haxe 和 JS 中使用。
    • daff,一个用于比较表的库,可用于 JS、Python、Java、C#、C++、Ruby 和 PHP。

    然而,特别是对于 C++,由于hxcpp 生成了很多 Haxe 特定的东西,包括 GC,它可能需要大量的清理或者使用起来并不简单。您可以在 Haxe 邮件列表中询问。

    【讨论】:

    • 推荐使用哪些框架或语言绑定来编写跨语言库?
    • 如果 Haxe 不是为编写跨语言库而设计的,那么是否有更好的工具用于此目的(或者 Haxe 通常是用于此目的的最佳工具)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多