Haxe 可以用于创建库吗?

问题描述 投票:0回答:3

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

haxe
3个回答
7
投票

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

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

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

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

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


3
投票

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

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

但是,特别是对于 C++ 来说,由于

hxcpp
生成了许多 Haxe 特定的东西,包括 GC,它可能需要大量的清理工作,或者使用起来并不简单。您可以在 Haxe 邮件列表中询问。


0
投票

我最近采用 Haxe 作为我的音乐和弦生成库:https://github.com/interstar/golden-pond

到目前为止,它对我来说效果很好。我想在 Python 中使用这个库,以便在两种不同的环境中使用。并作为 JS 在基于浏览器的应用程序中运行。看起来效果不错。

我最终也想以 C++ 和 Java 形式使用它。我可以想象那里会有更多的困难。但在编译为 C++ 时,它通过了单元测试。所以我相当乐观。

当然,我的库只是操作数据结构。它不依赖其他库或与系统资源连接。但现在,对于很多内部数据操作库来说,Haxe 是一个很棒的选择。

© www.soinside.com 2019 - 2024. All rights reserved.