Electron + vue 调用 dll 动态链接库
一、环境
node 14.16.0
electron 12.2.3
darwin x64
二、安装
yarn add ffi-napi
yarn add -D @types/ffi-napi
npm install -g node-gyp
# python
c:/python3/python.exe
# 如果 报错 Could not install Visual Studio Build Tools.
# 则到 C:\Users\xx\.windows-build-tools 目录下 手工进行安装,安装成功后在执行上面的命令。
# windows 编译工具,需要用管理员身份运行 PowerShell
npm i -g --production windows-build-tools
cd node_modules/ref-napi
node-gyp configure
node-gyp build
cd node_modules/ffi-napi
yarn install
三、使用
import ffi from 'ffi-napi'
const ros = new ffi.Library('../dll/SDKlib_x64', {
GetVersion: ['int', ['char']],
Init: ['init', ['void']]
})
module.exports = {
init() {
return ros.Init()
},
getVersion(ver: number) {
return ros.GetVersion(ver)
}
}
<template>
<div id="app">
<div id="nav">
<router-link to="/">Home</router-link> |
<router-link to="/about">About</router-link>
</div>
<router-view />
</div>
</template>
<script>
import { init } from './assets/utils/sdk.ts'
export default {
name: 'App',
created() {
window.logger.info('init')
init()
}
}
</script>
<style lang="less">
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
}
#nav {
padding: 30px;
a {
font-weight: bold;
color: #2c3e50;
&.router-link-exact-active {
color: #42b983;
}
}
}
</style>
四、遇到的各种报错报错报错
No native build was found for platform=darwin arch=x64 runtime=electron abi=87 uv=1 libc=glibc node=14.16.0 electron=12.2.3 webpack=true
module.exports = {
pluginOptions: {
electronBuilder: {
// node环境
nodeIntegration: true,
// webpack打包忽略 ffi-napi
externals: ['ffi-napi', 'ref-napi']
}
}
}
could not find any vs
install vs
npm config set msvs_version 2022
Dynamic Linking Error: dlopen(../dll/IRSDKlib_x64.dylib, 2): image not found
不同系统下使用的动态链接库不同,mac 下是 .dylib, win 下是 .dll
var EXT = (Library.EXT = {
linux: '.so',
linux2: '.so',
sunos: '.so',
solaris: '.so',
freebsd: '.so',
openbsd: '.so',
darwin: '.dylib',
mac: '.dylib',
win32: '.dll'
}[process.platform])
Uncaught Error: Dynamic Linking Error: Win32 error 126
路径问题,很可能就是没有找需要的 dll 动态库
Uncaught Error: Dynamic Linking Error: Win32 error 193
调用的动态库 dll 是 32 位的,而目标模块需要的是 64 位的
五、参考
目录
- 一、环境
- 二、安装
- 三、使用
- 四、遇到的各种报错报错报错
- No native build was found for platform=darwin arch=x64 runtime=electron abi=87 uv=1 libc=glibc node=14.16.0 electron=12.2.3 webpack=true
- could not find any vs
- Dynamic Linking Error: dlopen(../dll/IRSDKlib_x64.dylib, 2): image not found
- Uncaught Error: Dynamic Linking Error: Win32 error 126
- Uncaught Error: Dynamic Linking Error: Win32 error 193
- 五、参考
PREV
你这辈子有没有为科二拼过命
NEXT