electron调用基于napi的addon踩坑

在开发一个基于Electron的应用时,为了利用底层功能,作者将这些功能打包成一个NAPIAddon。文章详细介绍了如何在Visual Studio中创建这个Addon,包括确定 Electron 和 Node.js 的NAPI版本匹配,解决Electron不直接加载node.dll的问题,以及通过构造def文件生成适配Electron的lib,最终成功在Electron环境中调用Addon。

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

  最近写一个东西,界面基于electron,需要使用一些底层功能,所以将底层功能写成addon供electron调用。本人喜欢用vs开发,因为有些复杂的工程用node-gyp这种配置比较麻烦,所以研究了下vs写的addon。

  首先确定electron的node版本:electron版本列表

  然后确定该node使用的napi版本:node使用的napi版本

  只要lib中napi的版本对上了就行了。其实如果不是electron而是node来调用,那么用vs写一个dll,链接到对应版本的node.lib,然后配置里将后缀名改成.node,是可以直接require这个dll的,所以从本质说.node就是一个dll。

  但是如果换成electron就不行了,想了很久找到了原因。用depends查看生成的addon的话,会发现addon导入的还是node.dll,而electron是将node集成在内部的,而不是额外load这个node.dll,可以发现这些napi是在electron导出的:
在这里插入图片描述
  所以说electron在LoadLibrary这个addon时,找不到node.dll,也就无法完成函数导入。那么思路就明确了࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值