【问题标题】:Is it possible to create solib in OCaml是否可以在 OCaml 中创建 solib
【发布时间】:2020-08-09 00:46:54
【问题描述】:

我想在 OCaml 中实现 Linux/FreeBSD 的共享库,我需要它有 C 接口。这样我就可以实现各种语言的绑定。我有几个问题:

  • OCaml 是垃圾收集的,我担心传递给外部代码的对象可能会被 GC'ed。是否可以禁用 GC?也许还有其他方法可以解决此类问题?
  • 有没有办法编写像 C++ 的 extern "C" 或类似的 OCaml 代码,以便将其公开为 C 符号?
  • 是否有任何类似的更适合编写 solib 的高级语言?我仍然需要用 C/C++ 编写语言编译器,因此将其移植到新架构会相对容易。

【问题讨论】:

  • a section in the manual 正好处理这个问题。你应该从那里开始。
  • 你的最后一个问题是征求意见,因为格式不适合讨论,所以对 SO 不赞成。
  • @glennsl ,我阅读了手册,但据我了解,它建议将库包装到单独的 C 代码中,以实例化 OCaml,我试图避免这种情况。
  • 恕我直言,您的要求是不可能的。如果您希望代码的行为与 C 完全一样(链接和内存分配),您几乎必须用 C 编写。OCaml 为函数选择自己的名称,避免 GC 会为任何非平凡的代码生成看起来很荒谬的 OCaml。所有这些都是恕我直言。

标签: ocaml ocaml-dune


【解决方案1】:

我试图完成的事情是不可能的。决定通过 D-Bus 公开该库,因为很难正确实现大量编程语言的绑定,但现在每种语言都有 D-Bus 电池。

P。 S.:Rust 可能是实现 C solib 的好工具。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-26
    • 2020-04-30
    • 2012-10-09
    • 2021-07-02
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 2020-07-17
    相关资源
    最近更新 更多