初学者调用从网上搜索 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

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

被折叠的 条评论
为什么被折叠?



