Electron通过ffi调用dll(我这里以调用32位dll为例子,如果调用64为dll,更改编译环境即可)
- 编译
npm install ffi
cd .\node_modules\ffi
node-gyp rebuild --target=4.0.0 --arch=ia32 --target_arch=ia32 --msvs_version=2015
以同样的方式编译ref
target=4.0.0 --4.0.0是Electron的版本
- 使用
初始化
const ffi = require('ffi')
const ref = require('ref')
const stringPointer = ref.refType(ref.types.CString)
声明dll方法
let dllObj = ffi.Library(__dirname + '/dllProject.dll', {
'add': ['int', ['int', 'int']],
'stringtest': ['int', [stringPointer, 'int *']],
'callJsFun': ['void', []],
'setcallback': ['void', ['pointer']]
})
// 设置回调函数 可以直接在dll中调用j