【问题标题】:How do you make a language binding?你如何进行语言绑定?
【发布时间】:2009-05-31 20:23:30
【问题描述】:

虽然我或多或少地了解什么是语言绑定,但我很难理解它们是如何工作的。 例如,谁能解释一下如何为 WinAPI 制作 Java 绑定?

【问题讨论】:

    标签: binding


    【解决方案1】:

    如果您搜索 Foreign Function Interface 或 FFI,您会发现更好的结果。 FFI 允许您调用用不同语言编写的函数,即外国语言。不同的语言和运行时具有截然不同的 FFI,您必须单独学习每一个。学习 FFI 还迫使您比通常习惯的更多地了解语言的内部结构及其运行时。一些 FFI 让你用目标语言编写代码,比如 Haskell(FFI 代码必须用 Haskell 编写),而另一些 FFI 让你用源语言编写代码,比如 Python(FFI 代码必须用 C 编写)。

    某些语言不使用术语 FFI(尽管如果它们使用会很好)。对于 Java,它被称为 Java Native Interface, 或 JNI。

    【讨论】:

    • 谢谢。实际上,我知道 JNI。但我不知道我应该在哪里挖掘更多信息。
    【解决方案2】:

    语言(通常)已经定义了调用“本地”代码的语法。因此,如果您有导出方法foo() 的库,则进行投标将意味着您将在示例中创建具有方法foo() 的Java 类。这样,你就可以从代码的其余部分调用MyBinding.foo(),无论是纯Java方法还是编译C代码都没有区别。

    对于 Java,您可能还想查看 JNI 文档。其他语言也有类似的机制。有像SIP 这样的工具会获取一堆 C(++) 头文件,并为其生成 Python 绑定。我猜其他语言也可能有类似的工具。

    【讨论】:

      猜你喜欢
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      • 2011-01-15
      • 2023-03-18
      • 2011-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多