你如何使语言绑定?

时间:2009-05-31 20:23:31

标签: binding

虽然我或多或少地了解语言绑定是什么,但我很难理解它们是如何工作的。 任何人都可以解释如何为WinAPI创建Java绑定,例如?

2 个答案:

答案 0 :(得分:8)

如果搜索外部函数接口或FFI,您会发现更好的结果。 FFI允许您调用以不同语言编写的函数,即外部函数。不同的语言和运行时有非常不同的FFI,你必须分别学习每一个。学习FFI还会迫使您更多地了解您的语言内部及其运行时间,而不是您通常习惯的内容。有些FFI会让你用目标语言编写代码,比如Haskell(其中FFI代码必须用Haskell编写),而其他FFI则会让你用源语言编写代码,比如Python(其中FFI代码必须用C编写)。 p>

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

答案 1 :(得分:1)

语言(通常)定义了调用“本机”代码的语法。因此,如果您有导出方法foo()的库,那么进行绑定意味着您将使用方法foo()创建Java类。这样,您可以从代码的其余部分调用MyBinding.foo(),无论是纯Java方法还是编译C代码都没有区别。

再次针对Java,您可能希望查看JNI文档。其他语言也有类似的机制。像SIP这样的工具将需要大量的C(++)头文件,并为它生成Python绑定。我猜其他语言也可能有类似的工具。