electron调用dll文件
创始人
2024-01-19 05:09:44

Electron 对系统层能力的使用可能比较弱,此时需要求助 Python、C++、C# 等语言,通过 ffi-napi 库可以让 Node.js 使用 C++ dll,通过 electron-edge-js 库可以让 Node.js 使用 C# dll

1. 先确定dll文件是用什么语言写的.

使用peid 应用查看- 这个是exe文件运行在windows电脑上.

2.软件查看结果,可以看到用的是c++ 开发的

查看nodejs是多少位

windows下: 打开cmd 输入命令 node 在输入process

3. 使用关键的库 ffi-napi 加上 ref-napi 调用dll

安装: https://github.com/node-ffi-napi/node-ffi-napi

npm install ffi-napi
npm install ref-napi
npm install ref-array-napi
npm install ref-array

如果出现安装报错

                errorOut=warning ..\..\..\..\..\package.json: No license field
gyp info it worked if it ends with ok
gyp info using node-gyp@9.1.0
gyp info using node@16.18.0 | win32 | x64
gyp info find Python using Python version 3.9.12 found at "C:\ProgramData\Miniconda3\python.exe"
gyp info find VS using VS2022 (17.3.32929.385) found at:
gyp info find VS "C:\Program Files\Microsoft Visual Studio\2022\Community"
gyp info find VS run with --verbose for detailed information
gyp info spawn C:\ProgramData\Miniconda3\python.exe
gyp info spawn args [
gyp info spawn args   'C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\gyp\\gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'msvs',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\liuda\\Documents\\GitHub\\pos-electron\\node_modules\\ref-napi\\build\\config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   'C:\\Users\\liuda\\.electron-gyp\\14.0.0\\include\\node\\common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=C:\\Users\\liuda\\.electron-gyp\\14.0.0',
gyp info spawn args   '-Dnode_gyp_dir=C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp',
gyp info spawn args   '-Dnode_lib_file=C:\\\\Users\\\\liuda\\\\.electron-gyp\\\\14.0.0\\\\<(target_arch)\\\\node.lib',
gyp info spawn args   '-Dmodule_root_dir=C:\\Users\\liuda\\Documents\\GitHub\\pos-electron\\node_modules\\ref-napi',
gyp info spawn args   '-Dnode_engine=v8',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'C:\\Users\\liuda\\Documents\\GitHub\\pos-electron\\node_modules\\ref-napi\\build',
gyp info spawn args   '-Goutput_dir=.'
gyp info spawn args ]
gyp: name 'openssl_fips' is not defined while evaluating condition 'openssl_fips != ""' in binding.gyp while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack     at ChildProcess.onCpExit (C:\Program Files\nodejs\node_modules\npm\node_modules\node-gyp\lib\configure.js:284:16)
gyp ERR! stack     at ChildProcess.emit (node:events:513:28)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:293:12)
gyp ERR! System Windows_NT 10.0.19042
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\liuda\Documents\GitHub\pos-electron\node_modules\ref-napi
gyp ERR! node -v v16.18.0
gyp ERR! node-gyp -v v9.1.0
gyp ERR! not ok
error Command failed with exit code 1.command='C:\Program Files\nodejs\node.exe' 'C:\Users\liuda\AppData\Roaming\npm\node_modules\yarn\bin\yarn.js' run installworkingDir=C:\Users\liuda\Documents\GitHub\pos-electron\node_modules\ref-napi

mac解决方案:

使用命令 xcode-select --install 解决问题

windwos解决方案

使用命令

// 以管理员身份运行终端执行命令
npm install --global --production windows-build-tools

安装好后继续使用上面的命令安装两个第三方库

windows环境(我用的虚拟机virtual box):

安装vs studio 桌面版C++

安装node 里面有个C++选项需要给选上

yarn build 打包报错:
全局安装cnpm
npm config set registry http://registry.npm.taobao.org/
npm i cnpm

安装windows平台编译环境

安装windows-build-tools

https://blog.csdn.net/weixin_46261309/article/details/105456830

virtualBox 复制粘贴功能

https://blog.csdn.net/weixin_41278720/article/details/79101590

其他

C# 安装 读取dll文件
项目地址 https://github.com/agracio/electron-edge-js
electron-edge-js

npm install electron-edge-js

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
苁蓉的食用方法 鲜苁蓉的吃法有... 肉苁蓉号称“温而不热,补而不峻,暖而不燥,滑而不泄,故有从容之名。”历来也是传统药食同源的滋补佳品。...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
阳澄湖在哪里哪个省的 阳澄湖是... 点击题目下方苏州生活指南有用 有趣 有态度近期的阳澄湖度很高,3月24日,央视二套《第一时间》直播连...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...