Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Binding 如何制作语言绑定?_Binding - Fatal编程技术网

Binding 如何制作语言绑定?

Binding 如何制作语言绑定?,binding,Binding,虽然我或多或少了解语言绑定是什么,但我仍在努力理解它们是如何工作的。 例如,有人能解释一下如何为WinAPI创建Java绑定吗?如果搜索外部函数接口或FFI,您会找到更好的结果。FFI允许您调用用不同语言编写的函数,即外文函数。不同的语言和运行时具有截然不同的FFI,您必须单独学习每种语言和运行时。学习FFI还迫使你比平时更了解语言的内部结构及其运行时。一些FFI让您用目标语言编写代码,如Haskell(FFI代码必须用Haskell编写),另一些FFI让您用源语言编写代码,如Python(FF

虽然我或多或少了解语言绑定是什么,但我仍在努力理解它们是如何工作的。
例如,有人能解释一下如何为WinAPI创建Java绑定吗?

如果搜索外部函数接口或FFI,您会找到更好的结果。FFI允许您调用用不同语言编写的函数,即外文函数。不同的语言和运行时具有截然不同的FFI,您必须单独学习每种语言和运行时。学习FFI还迫使你比平时更了解语言的内部结构及其运行时。一些FFI让您用目标语言编写代码,如Haskell(FFI代码必须用Haskell编写),另一些FFI让您用源语言编写代码,如Python(FFI代码必须用C编写)

某些语言不使用FFI这个术语(尽管如果使用的话会更好)。对于Java,它被称为或JNI。

语言(通常)定义了调用“本机”代码的语法。所以,如果您有导出方法
foo()
的库,那么在您的示例中,进行投标意味着您将使用方法
foo()
创建Java类。这样,您就可以从代码的其余部分调用
MyBinding.foo()
,无论它是纯Java方法还是编译的C代码,都不会有任何区别


同样对于Java,您可能需要查看文档。其他语言也有类似的机制。有这样的工具将获取大量的C(++)头文件,并为其生成Python绑定。我想其他语言也可以有类似的工具。

谢谢。事实上,我知道JNI。但我不知道我应该在哪里挖掘更多的信息。