将 .hx 代码直接(或间接)编译为动态库 (ndll)

Posted

技术标签:

【中文标题】将 .hx 代码直接(或间接)编译为动态库 (ndll)【英文标题】:Compiling .hx code directly (or indirectly) to a dynamic library (ndll) 【发布时间】:2014-09-26 16:11:14 【问题描述】:

我正在做一个项目,我计划在最终程序中将某些部分分成单独的 dll/ndll。我想这样做的主要原因是支持插件和附加组件,因此如果需要可以添加更多功能,但如果这是唯一的要求,仍然可以使用核心应用程序。

我在 C# 中做过类似的事情(通过 IDE 教唆,所以我不必编写任何链接器/编译命令)所以我知道一般过程,但我似乎无法找到编写 HX 代码的方法然后有它编译成一个ndll。

我发现了这个http://old.haxe.org/doc/cpp/ffi?lang=en,它展示了如何使用 hxcpp 和 g++ 将 cpp 代码编译成 ndll。我认为应该有一种方法可以使用 LIME 或 HXCPP 创建一个构建文件,让我可以一步完成,而不必制作“假”主函数来将 HX 编译为 CPP 或 CS。

如果有人知道这样做的项目,并且有一个 build.hxml 或 build.xml 文件来描述这个或一个教程或指南,我会很高兴看到它。

【问题讨论】:

恐怕你必须自己解决这个问题。不过,您找到的 URL 似乎是一个好的开始。 【参考方案1】:

试试这个:

lime create extension TestExt
lime rebuild TestExt windows

酌情将“windows”替换为“mac”或“linux”。假设它有效,ndll 将显示在 TestExt/ndll/ 的子文件夹中。


至于教程,我写了this one。它面向 OpenFL 程序员,但“为 ios 编写代码”部分涵盖了您需要了解的内容。 (您也可以在 template 上为您的代码建模。)

如果有帮助,我已经让 a tool 生成 Lime 需要的一些样板代码。

【讨论】:

谢谢。我希望保持 100% Haxe,但这看起来行不通。您的指南使设置和构建变得容易,我设法在几分钟内使模板正常工作。 据说 OpenFL 团队想出了一种用 Haxe 编写代码的方法,而以前必须用 C++ 编写。他们只是没有解释如何。

以上是关于将 .hx 代码直接(或间接)编译为动态库 (ndll)的主要内容,如果未能解决你的问题,请参考以下文章

用于 C++ 的 C# 包装器,但仅编译为静态库

将 *.a 编译为 *.so

在 C/C++ 中访问 Java/Python 的动态链接库?

将现有 C# 代码编译为 WebAssembly

使用 emcc 将 C++ 代码编译为 WASM 的问题

Linux下静态库与动态库