# @2060\.io/ffi-napi 中文文档

规范地址：https://npmcn.com/package/%402060.io/ffi-napi/

版本：4\.0\.9
npm 元数据更新时间：2024-04-05T17:29:58.897Z
中文译文更新时间：2026-11-06T02:40:33.147Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%402060.io/ffi-napi
原文对照：https://npmcn.com/package/%402060.io/ffi-napi/?lang=original
项目主页：http://github.com/node-ffi-napi/node-ffi-napi
源码仓库：https://github.com/node-ffi-napi/node-ffi-napi

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：5.8 MB，617 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- Node.js 要求：\>=18
- 运行依赖：6 个
- 首次发布：2023-08-13T12:30:58.838Z
- 最新版本发布：2024-04-05T17:29:58.703Z
- 近 30 天下载量：6215（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：6（近 12 个月 0 个）

## 中文简介

一个用于节点.js, N-API 样式的外向函数接口( FFI)

## 安装

```sh
npm install @2060.io/ffi-napi
```

也可以使用：`pnpm add @2060.io/ffi-napi`、`yarn add @2060.io/ffi-napi`、`bun add @2060.io/ffi-napi`

## README

# 节点-ffi-napi

### N- API 的 Node.js 外国函数接口

[![Greenkeeper badge](https://badges.greenkeeper.io/node-ffi-napi/node-ffi-napi.svg)](https://greenkeeper.io/)

[![NPM Version](https://img.shields.io/npm/v/ffi-napi.svg?style=flat)](https://npmjs.org/package/ffi-napi) [![NPM Downloads](https://img.shields.io/npm/dm/ffi-napi.svg?style=flat)](https://npmjs.org/package/ffi-napi) [![Build Status](https://travis-ci.org/node-ffi-napi/node-ffi-napi.svg?style=flat&branch=master)](https://travis-ci.org/node-ffi-napi/node-ffi-napi?branch=master) [![Coverage Status](https://coveralls.io/repos/node-ffi-napi/node-ffi-napi/badge.svg?branch=master)](https://coveralls.io/r/node-ffi-napi/node-ffi-napi?branch=master) [![Dependency Status](https://david-dm.org/node-ffi-napi/node-ffi-napi.svg?style=flat)](https://david-dm.org/node-ffi-napi/node-ffi-napi)

`node-ffi-napi` 是用于加载和调用动态库的节点.js addon 使用纯 Java 脚本。 它可用于创建对本地图书馆的约束 不写入任何 C++ 代码.

也简化了节点的扩增,并增加了C码 处理 JavaScript 和 C 之间的类型翻译, C 可添加还原 将锅炉板的代码转换为 C `example/factorial` 以此为例.

**页:1**: 此叉使用了补丁版本 `ref-napi` 由于在密集使用时发现严重性能问题. 这个补丁已被证明在更古老的节点版本中不稳定. 因此,需要QQ18节点.

**警告**数字 : `node-ffi-napi` 假设你知道自己在做什么。 你会漂亮 很容易创建您会错失解释器的情况, 除非 你有C调试器的技巧 你可能不会知道发生了什么.

**警告**: 最初的API 的 `node-ffi` 大部分未触及 N-API包装. 但是,API没有非常明确的属性 在收集垃圾和多条行刑的背景下。 没错 建议避免该图书馆使用多条线 如果可能的话.

## 示例

```js
var ffi = require('ffi-napi');

var libm = ffi.Library('libm', {
  'ceil': [ 'double', [ 'double' ] ]
});
libm.ceil(1.5); // 2

// You can also access just functions in the current process by passing a null
var current = ffi.Library(null, {
  'atoi': [ 'int', [ 'string' ] ]
});
current.atoi('1234'); // 1234
```

更详细的导言,请参看 [节点- ffi 教程页面](https://github.com/node-ffi/node-ffi/wiki/Node-FFI-Tutorial)。 。 。 .

## 所需资源

-   Linux, OS X, Windows, or Solaris (英语).
-   `libffi` 与节点- ffi- napi 捆绑在一起 _没有_ 需要安装在您的系统中 .
-   目前版本被测试在节点6及以上运行.

## 安装

确保你安装了所有 [必要的建筑 工具](https://github.com/TooTallNate/node-gyp#installation) 为了你的平台, 然后援引:

```bash
$ npm install ffi-napi
```

## 源安装/ 手工汇编

要从源头编译,最容易使用 [`node-gyp`](https://github.com/TooTallNate/node-gyp)数字 :

```bash
$ npm install -g node-gyp
```

现在你可以编译 `node-ffi-napi`数字 :

```bash
$ git clone git://github.com/node-ffi-napi/node-ffi-napi.git
$ cd node-ffi
$ node-gyp rebuild
```

## 类型

您在函数声明中指定的类型对应 ref 的类型 系统。 这么说吧 [参见其文件](https://github.com/TooTallNate/ref#built-in-types) 页:1 如果你不熟悉,请参考.

## V8和64位类型

在内部, V8 存储将装入 32 位空间的整数 整数, 和那些不属于这个范围的人 被投入到双精度 浮点数. 这有问题,因为FP数字不准确. 要绕过这里,处理64位整数的节点-ffi方法返回 字符串并可以接受字符串作为参数.

## 拨打超头

有与FFI电话有关的非部落间接费用。 比较硬码 装订版本 `strtoul()` 改为FFI版本 `strtoul()` 显示 原生的硬编码装订速度更快。 所以不要随便用 C版本的函数只是因为它更快. 这里面成本很高 FFI的电话,所以让他们值得.

## 许可证

MIT许可证。 见 `LICENSE` 文档.

## 常见问题

### @2060\.io/ffi-napi 是什么？

一个用于节点\.js, N-API 样式的外向函数接口\( FFI\)

### 如何安装 @2060\.io/ffi-napi？

在项目目录运行 npm install @2060\.io/ffi-napi，或使用 pnpm add / yarn add / bun add。

### @2060\.io/ffi-napi 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @2060\.io/ffi-napi 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @2060\.io/ffi-napi 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=18。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @2060\.io/ffi-napi 可以商用吗？

@2060\.io/ffi-napi 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @2060\.io/ffi-napi 的下载量有多少？

根据 npm 官方下载统计，@2060\.io/ffi-napi 在 2026/10/05 – 2026/11/03 这 30 天内被下载 6,215 次，日均约 207 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @2060\.io/ffi-napi 还在维护吗？

最新版本 4\.0\.9 发布于 2024/04/06（2 年前）；至今共发布 6 个版本，其中过去 12 个月发布了 0 个；首次发布于 2023/08/13。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

