首先安装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库相关推荐

  1. NodeJS通过ffi调用DLL

    第一步建立一个dll, 提供方法如下 int WINAPI CAM_Open(char *pIn, char* pOut); 第二步安装ffi (前提已安装python2.x环境) npm insta ...

  2. nodejs安装ffi模块调用dll详解

    网上很多关于nodejs安装ffi的模块讲的条理实在太不清晰了,nodejs使用的VC++运行库对于不同的nodejs版本是不一致的.nodejs10需要的vs版本是vs2015. 1 安装vs201 ...

  3. rust 使用 ffi 调用 C 静态链接库

    创建build.rs //build.rs extern crate dunce; use std::{env, path::PathBuf}; fn main() { let library_nam ...

  4. Electron9.x_Vue_调用DLL库

    本文主要介绍在 Electron9.x 中,使用ffi-napi,ref-array-napi,ref-napi 加载 Windows 动态链接库,并在Vue 渲染进程中使用.使用过程中会遇到一系列的 ...

  5. 【Microsoft Azure 的1024种玩法】七十二.使用NodeJS手动编写调用Azure Cognitive Services Translator API代码获取其支持翻译的语言集

    [简介] Azure Cognitive Services Translato 是一种基于云的神经网络机器翻译服务,同时也是 REST API 的 Azure 认知服务系列的一部分. 本篇文章将会主要 ...

  6. linux下Qt调用C++库文件(.so)程序实现

    文章目录 主要内容 一.编程环境及实现方法 二.项目实现 1.创建项目 2.导入库文件 三.项目中遇到的问题 总结 主要内容 如标题所示,在linux下使用qtcreator创建项目调用C++库文件, ...

  7. Dictionary作为数据源绑定,调用c++库中返回为BYTE*的函数,listView项排序

    最近在做一个电子档案管理的项目.现在还处于初期,只是做一个简单demo拿去跟客户演示.至于最后谈不谈得下来,到底做不做,反正我是不看好,但没因为这样就马马虎虎.草草了事.这个项目算是b/s加c/s混合 ...

  8. .NET 调用c++库注意事项

    原文:.NET 调用c++库注意事项 很久没有更新了,主要还是因为自己懒吧,希望从今天开始坚持至少一周写一篇文章. 调用函数库是正常的,调用完成后,在使用EF进行数据更新时,将发生如下异常信息,而且几 ...

  9. python 调用 so 库 需要注意的地方

    2019独角兽企业重金招聘Python工程师标准>>> 使用C++而不是C来编写so库时往往会遇到一些问题,这里着重探讨一下linux环境下C++编写so库 及python调用so库 ...

  10. 【C 语言】动态库封装与设计 ( 动态库调用环境搭建 | 创建应用 | 拷贝动态库相关文件到源码路径 | 导入头文件 | 配置动态库引用 | 调用动态库中的函数 )

    文章目录 一.在 Visual Studio 2019 中创建 " 控制台应用 " 程序 二.拷贝 xxx.lib.xxx.dll.xxx.h 到源码路径 三.导入 xxx.h 头 ...

最新文章

  1. 专访小邪:从十年技术之路看阿里技术体系的变革
  2. Net设计模式实例之享元模式( Flyweight Pattern)
  3. python3d动态图-Python图像处理之gif动态图的解析与合成操作详解
  4. 【数据挖掘】高斯混合模型 ( 模型简介 | 软聚类 | 概率作用 | 高斯分布 | 概率密度函数 | 高斯混合模型参数 | 概率密度函数 )
  5. Java入门学习笔记[狂神说Java]
  6. 谷歌开源 Python Fire:可自动生成命令行接口
  7. 树:二叉树的层序遍历算法(超简洁实现及详细分析)
  8. JavaScript ES2019的新增功能
  9. 排序(2):直接插入排序
  10. 《理想之城》“打光太暗”是有意为之?算法工程师揭秘什么才是“好画面”...
  11. mysql 表2符合表1,MySQL:表tbl_2_1_15已满
  12. scrapy框架简介和基础应用
  13. 几何校正(坐标变换+灰度重采样)
  14. mysql_stmt_precheck_COM_STMT_PREPARE 1
  15. 微信记账本小程序(代码+功能介绍)
  16. 关于数据库的练习题,关系代数
  17. BlackArch 字典收集(wordlistctl)
  18. 调用excel加载项实现多元回归方程求解
  19. 虚拟机的桥接模式和NAT模式
  20. GUI(Graphical User Interface)

热门文章

  1. springboot2.0启动报错The APR based Apache Tomcat Native library which allows optimal performance in ...
  2. 公司最大的内耗,是“人才错配”
  3. ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  4. 短信验证码平台有哪些比较好用?
  5. [树 乱搞] BZOJ 4238 电压
  6. 拼接字符串并以逗号隔开
  7. 硬盘是计算机的 奥鹏,奥鹏计算机应用基础一教学内容.docx
  8. 腾讯精选50题—Day6题目43,46,53
  9. C# WebService 远程服务器返回错误:(500)内部服务器错误
  10. linux shell 脚本复制特定后缀文件到另外一个文件夹下