node.js 调用 dll

分类:Node.js     发布时间:2024-05-10     最后更新:2024-09-08     浏览数:1351
本文通过一个简单例子展示 node.js 通过 koffi 库调用 dll 提供的函数

最近在研究替换 C-Lodop 的方案。

方案一:C++ addon

C++ addon 是用 C++ 编写的动态链接的共享对象。require() 函数可以将插件加载为普通的Node.js 模块。插件提供了 JavaScript 和 C/C++ 库之间的接口。

实现插件的三种方式:

实现插件的方式 优点 缺点
Node-API 可移植、可跨不同 Node.js 版本
nan 不用考虑 node.js 版本
直接使用内部 V8、libuv 和 Node.js 库 实现复杂

Node-API(以前的 N-API)是一种用于构建本机插件的 API。

方案二:ffi-napi

ffi-napi 是一个 Node.js 模块,它提供了一个简单的方式来调用外部(本地)的 C/C++ 函数,而无需编写 C++ 插件。它使用了 Node.js 的 N-API 来实现跨版本的稳定性,并且具有良好的跨平台兼容性。

优点:不用编写 C++ 代码或者构建 C++ 插件。

缺点:安装 ffi-napi 需要 node-gyp 构建、Python、msvs。项目已不再更新,最后一次更新 2021-03-18

https://github.com/node-ffi-napi/node-ffi-napi

方案三:koffi

Koffi 是 Node.js 的一个快速且易用的 C FFI 模块。

特性:

1、低开销,高性能。

2、通过引用(指针)和值支持基元和聚合数据类型(结构和固定大小的数组)。

3、Javascript函数可以用作C回调(自1.2.0起)。

https://koffi.dev/

https://github.com/Koromix/rygel/

名词解释:

FFI: Foreign Function Interface

NAN: Native Abstractions for Node.js

参考

上一篇: Windows 系统下使用 CMake 来构建 下一篇: 用 C++ 写一个 nodejs addon 例子