Nodejs使用ffi调用so库
首先安装nodejs
apt install node
或者apt install nodejs
这两个之间有一个指令可行。
然后执行apt install npm
到工程目录下
npm install ffi-napi --save
然后建一个你自己的so库,或者调用的so库。
下面是我的源文件 add.c
extern "C" int add(int a,int b) {return a+b;
}
注意如果是c和c++混合编写的源文件,一定要在c接口处注明extern "C"
如果你要通过源文件直接编译.so库的话我提供一个案例用的示例,你也可以通过其他方法创建.so库
新建一个makefile文件(就叫这个名,而且没有后辍名)里面加上
all:gcc -fPIC -shared -o libdemo.so add.c
clean:rm -frv libdemo*
然后再项目目录下使用指令make
然后就会多出一个.so库来
然后写个test.js文件里面写入
var ffi = require('ffi-napi');
var demo = ffi.Library('./libdemo',{'add':['int',['int','int']]});
console.log(demo.add(123456789,987654321));
注意libdemo就是编译出来的.so库,前面要加./表示在当前项目目录的根目录下。
add是你的函数名,int是返回值,后面的两个int 是参数值。
然后在当前目录输入命令node test.js即可成功。
--------------------------------------------------------------------------------------------------------------------------
为什么要用ffi-napi呢?因为ffi不支持高版本的nodejs,而我们默认安装的都是高版本的。
Nodejs使用ffi调用so库相关推荐
- NodeJS通过ffi调用DLL
第一步建立一个dll, 提供方法如下 int WINAPI CAM_Open(char *pIn, char* pOut); 第二步安装ffi (前提已安装python2.x环境) npm insta ...
- nodejs安装ffi模块调用dll详解
网上很多关于nodejs安装ffi的模块讲的条理实在太不清晰了,nodejs使用的VC++运行库对于不同的nodejs版本是不一致的.nodejs10需要的vs版本是vs2015. 1 安装vs201 ...
- rust 使用 ffi 调用 C 静态链接库
创建build.rs //build.rs extern crate dunce; use std::{env, path::PathBuf}; fn main() { let library_nam ...
- Electron9.x_Vue_调用DLL库
本文主要介绍在 Electron9.x 中,使用ffi-napi,ref-array-napi,ref-napi 加载 Windows 动态链接库,并在Vue 渲染进程中使用.使用过程中会遇到一系列的 ...
- 【Microsoft Azure 的1024种玩法】七十二.使用NodeJS手动编写调用Azure Cognitive Services Translator API代码获取其支持翻译的语言集
[简介] Azure Cognitive Services Translato 是一种基于云的神经网络机器翻译服务,同时也是 REST API 的 Azure 认知服务系列的一部分. 本篇文章将会主要 ...
- linux下Qt调用C++库文件(.so)程序实现
文章目录 主要内容 一.编程环境及实现方法 二.项目实现 1.创建项目 2.导入库文件 三.项目中遇到的问题 总结 主要内容 如标题所示,在linux下使用qtcreator创建项目调用C++库文件, ...
- Dictionary作为数据源绑定,调用c++库中返回为BYTE*的函数,listView项排序
最近在做一个电子档案管理的项目.现在还处于初期,只是做一个简单demo拿去跟客户演示.至于最后谈不谈得下来,到底做不做,反正我是不看好,但没因为这样就马马虎虎.草草了事.这个项目算是b/s加c/s混合 ...
- .NET 调用c++库注意事项
原文:.NET 调用c++库注意事项 很久没有更新了,主要还是因为自己懒吧,希望从今天开始坚持至少一周写一篇文章. 调用函数库是正常的,调用完成后,在使用EF进行数据更新时,将发生如下异常信息,而且几 ...
- python 调用 so 库 需要注意的地方
2019独角兽企业重金招聘Python工程师标准>>> 使用C++而不是C来编写so库时往往会遇到一些问题,这里着重探讨一下linux环境下C++编写so库 及python调用so库 ...
- 【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )
文章目录 一.在 Visual Studio 2019 中创建 " 控制台应用 " 程序 二.拷贝 xxx.lib.xxx.dll.xxx.h 到源码路径 三.导入 xxx.h 头 ...
最新文章
- 专访小邪:从十年技术之路看阿里技术体系的变革
- Net设计模式实例之享元模式( Flyweight Pattern)
- python3d动态图-Python图像处理之gif动态图的解析与合成操作详解
- 【数据挖掘】高斯混合模型 ( 模型简介 | 软聚类 | 概率作用 | 高斯分布 | 概率密度函数 | 高斯混合模型参数 | 概率密度函数 )
- Java入门学习笔记[狂神说Java]
- 谷歌开源 Python Fire:可自动生成命令行接口
- 树:二叉树的层序遍历算法(超简洁实现及详细分析)
- JavaScript ES2019的新增功能
- 排序(2):直接插入排序
- 《理想之城》“打光太暗”是有意为之?算法工程师揭秘什么才是“好画面”...
- mysql 表2符合表1,MySQL:表tbl_2_1_15已满
- scrapy框架简介和基础应用
- 几何校正(坐标变换+灰度重采样)
- mysql_stmt_precheck_COM_STMT_PREPARE 1
- 微信记账本小程序(代码+功能介绍)
- 关于数据库的练习题,关系代数
- BlackArch 字典收集(wordlistctl)
- 调用excel加载项实现多元回归方程求解
- 虚拟机的桥接模式和NAT模式
- GUI(Graphical User Interface)
热门文章
- springboot2.0启动报错The APR based Apache Tomcat Native library which allows optimal performance in ...
- 公司最大的内耗,是“人才错配”
- ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
- 短信验证码平台有哪些比较好用?
- [树 乱搞] BZOJ 4238 电压
- 拼接字符串并以逗号隔开
- 硬盘是计算机的 奥鹏,奥鹏计算机应用基础一教学内容.docx
- 腾讯精选50题—Day6题目43,46,53
- C# WebService 远程服务器返回错误:(500)内部服务器错误
- linux shell 脚本复制特定后缀文件到另外一个文件夹下