ffi 的原理是什么?

两种语言写的程序是如何实现交互的呢?


预览:

取消

FFI 一个无需参数个数和类型下就能调用的一个函数。

能成立是因为: 在任何一个ABI 下,任一函数的函数声明(例: f=T -> T'),它的函数和返回有确定的滙编位置(e.g. i(f)和 o(f))

运作=声明+ABI+函数地址+数据

创建于 10/1/2019, 4:05:56 AM

两种

  1. caller和callee都实现符合C语言ABI接口——如C#,Java通过p-Invoke/JNI导出了C ABI接口
  2. 用于实现callee宿主的语言,直接操作承载callee的虚拟机,实现交互——如lua, python的binding
创建于 11/1/2019, 2:50:16 AM