API 概览
SenRi FFI 导出的公共 API 一览。
模块导出
ts
import {
// 核心
Library,
types,
// 类型构造器
pointer,
array,
struct,
// 指针操作
Pointer,
callback,
// 内存管理
alloc,
free,
addressOf,
errno,
strerror,
// 错误
FFIError,
FFITypeError,
} from 'senri_ffi';API 分类
Library — 库加载与函数绑定
| 导出 | 说明 |
|---|---|
Library.load(path) | 加载原生共享库 (.dll/.so/.dylib) |
lib.func(name, retType, argTypes, options?) | 绑定 C 函数(带缓存) |
lib.close() | 关闭库并释放资源 |
详见 Library
types — 统一类型系统
| 类型 | C 等价 | 大小 |
|---|---|---|
types.void | void | 0 |
types.int8 | int8_t | 1 |
types.uint8 | uint8_t | 1 |
types.int16 | int16_t | 2 |
types.uint16 | uint16_t | 2 |
types.int32 | int32_t | 4 |
types.uint32 | uint32_t | 4 |
types.int64 | int64_t | 8 |
types.uint64 | uint64_t | 8 |
types.float32 | float | 4 |
types.float64 | double | 8 |
types.pointer | void* | 8 |
types.cstring | char* | 8 |
详见 类型系统
pointer / array — 复合类型构造器
| 函数 | 说明 |
|---|---|
pointer(type?) | 创建指针类型描述符 |
array(type, length) | 创建数组类型描述符 |
详见 类型系统
struct — 结构体定义
| 函数 | 说明 |
|---|---|
struct(fields, options?) | 定义 C 结构体类型 |
详见 struct
Pointer — 原始内存读写
| 方法 | 读/写 |
|---|---|
readInt8 / writeInt8 | int8 |
readUint8 / writeUint8 | uint8 |
readInt16 / writeInt16 | int16 |
readUint16 / writeUint16 | uint16 |
readInt32 / writeInt32 | int32 |
readUint32 / writeUint32 | uint32 |
readInt64 / writeInt64 | int64 (BigInt) |
readUint64 / writeUint64 | uint64 (BigInt) |
readFloat32 / writeFloat32 | float32 |
readFloat64 / writeFloat64 | float64 |
readPointer / writePointer | pointer |
readCString / writeCString | C 字符串 |
add(offset) | 指针偏移 → 新 Pointer |
toBigInt() | 转为 BigInt |
address (getter) | 获取原始地址 |
详见 Pointer
callback — 回调函数
| 函数 | 说明 |
|---|---|
callback(retType, argTypes, fn, options?) | 将 JS 函数封装为 C 函数指针 |
详见 callback
内存管理
| 函数 | 说明 |
|---|---|
alloc(size) | 分配指定大小的内存 |
free(ptr) | 释放内存 |
addressOf(buffer) | 获取 ArrayBuffer 的指针地址 |
errno() | 获取最后一次系统调用的错误码 |
strerror(code?) | 获取错误码对应的描述字符串 |
详见 内存管理
错误类型
| 类 | 说明 |
|---|---|
FFIError | 通用 FFI 错误 |
FFITypeError | 类型相关错误(继承自 FFIError) |
详见 错误处理
详细文档:
