electron中dll的调用

本文介绍了如何在Node.js环境中安装并使用ffi-napi和ref-napi库,包括ffi-napi自动编译和ref-napi手动编译步骤,以及如何通过C++函数创建和引用动态链接库(DLL)的方法。重点讲解了DLL文件的创建和在JavaScript中的引用过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装ffi-napi

1、安装ffi-napi,ref-napi ,ref-array-napi,ref-struct-napi 依赖

npm i ffi-napi ref-napi ref-array-napi ref-struct-napi -S

注:ffi-napi 会自动调用windows编译工具进行编译,但是 ref-napi 不会,还需要手动执行 node-gyp 命令进行编译
   

cd node_modules\ref-napi\
node-gyp configure
node-gyp build
cd xx:\xxxxx


2、编写引用js

.cpp文件

#include "MyCode.h"

int Add ( int a , int b )
{
       return ( a + b );
}

MyCode.h

#ifndef _MYCODE_H_
#define _MYCODE_H_

#ifdef DLLDEMO1_EXPORTS
#define EXPORTS_DEMO _declspec( dllexport )
#else
#define EXPORTS_DEMO _declspec(dllimport)
#endif

extern "C" EXPORTS_DEMO int Add (int a , int b);

#endif

生成.dll文件 MyDll.dll,新建引用dll方法的js文件

const ffi = require('ffi-napi')                            引用ffi-napi
const path = require('path')                               引用path
let { arch } = process                                     判断本地是32位还是64位
	
//默认加载 32位 DLL
let dllFilePath = path.resolve('resources/DLLDemo1')
if (arch === 'x64') {
	dllFilePath = path.resolve('resources/DLLDemo1')
}
	
// 加载 DLL文件,无需写扩展名,将DLL中的函数映射成JS方法
// 导出为JS方法
	
//dll中函数
const MyDellDemo = new ffi.Library(dllFilePath, {
	// 方法名必须与C函数名一致,dll中函数为Add
	Add: [
		'int', // 对应 C函数返回类型
		['int', 'int'] // C函数参数列表
	]
})
	
module.exports = {
	add(x, y) {
		return MyDellDemo.Add(x, y)
	}
}

引用dll进程

import { add } from './MyDll'                          引用编写的引用文件地址
var num = add(1,2);                                    调用dll中add方法,获取1+2值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值