说说初学者 NodeJS 用 ffi 调用 C++ 的坑

这篇博客讲述了初学者在尝试使用Node.js调用C++代码时遇到的问题,由于ffi模块已长时间未更新,不支持最新版本的Node.js。解决方案是使用ffi-napi替代ffi。在安装和使用ffi-napi过程中,可能会遇到编译错误,如文件无效或磁盘空间不足,此时可删除node-gyp缓存并重新编译。

初学者调用从网上搜索 nodejs 调用 c++ 的案例, 看上去最简单的莫过于用 ffi , 只需要如下代码就OK了

var ffi = require('ffi');

//第一个形参为dll所在位置(dll文件可以不用加.dll),第二个为函数信息
var libm = ffi.Library(__dirname + 'dllFile', {
    //函数名
    'fun': ['int', ['string', 'string']]
});

//调用
var str1="a";
var str2="b";
libm.fun(str1, str2);

于是乎按照网上的案例 一顿操作, 结果怎么都过不去 !!!

原因是: ffi 因版本太长时间未更新, 只能支持 nodejs V12 以前的版本

(截至今日 2021年5月10日 是不行的, 以后万一作者更新了呢? )

如果你装的是 V12及更高版本的NodeJS, 一定失败 , 会遇到一堆 v8.h 找不到啊 / 函数不接受 0 个参数 啊 等等问题. ( 除非你本身是C++高手, 修改 ffi 的 c 代码 )

解决办法 : 使用 ffi-napi
npm install ffi-napi 
var ffi = require('ffi-napi');

//第一个形参为dll所在位置(dll文件可以不用加.dll),第二个为函数信息
var libm = ffi.Library(__dirname + 'dllFile', {
    //函数名
    'fun': ['int', ['string', 'string']]
});

//调用
var str1="a";
var str2="b";
libm.fun(str1, st
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值