Electron是一個使用HTML,CSS和JavaScript構建跨平臺桌面應用程序的開源框架。它允許開發人員使用Web技術開發應用程序,包括Vue.js。
在使用Electron和Vue構建Deskop應用程序時,有時需要在Electron中使用本機C / C ++庫。這時可以使用一個.node文件來連接dll庫。
在electron-vue中使用本地dll需要以下步驟:
- 通過ffi-napi模塊導入要使用的dll庫。
- 在Vue中調用dll函數。
- 如果dll函數需要傳遞參數,則可以在FFI.Library方法中為其添加相應的方法簽名。
- 如果要使用非Windows下的dll,可以使用CMake構建出.so文件,使用node-ffi-napi進行調用。
const FFI = require('ffi-napi');
const libPath = path.join(__dirname, 'native', 'Bin.dll');
const lib = new FFI.Library(libPath,{
'FunctionName':['int',[]]
});
let ret = lib.FunctionName();
console.log(ret);
const FFI = require('ffi-napi');
const ref = require('ref-napi');
const path = require('path');
const Struct = require('ref-struct-napi');
//定義C++中使用的結構體數據類型
let Point = Struct({
x: 'int',
y: 'int'
});
//定義C++中使用的函數簽名
let argType = [Point, 'int'];
let retType = 'int';
//導入dll庫
let libPath = path.resolve(__dirname, './Fun.dll');
let lib = new FFI.Library(libPath,{
'add': [retType, argType]
});
//創建結構體
let point = new Point({x: 10, y: 20});
//調用dll函數
let result = lib.add(point, 30);
console.log(result);
// 首先需要安裝cmake-js:npm install -g cmake-js
const ffi = require('ffi-napi');
const ref = require('ref-napi');
const Struct = require('ref-struct-napi');
// 定義結構體
const Point = Struct({
x: 'int',
y: 'int'
});
// 定義函數指針
const AddFunction = ffi.ForeignFunction(
ref.types.int32, // 返回類型
['pointer', 'int'], // 參數類型
'Add' // 函數名
);
const point = new Point({
x: 10,
y: 100
});
console.log(AddFunction(point.ref(), 200));
因此,在構建Desktop應用程序時,Electron Vue可以非常輕松地通過本地dll實現本機C / C ++庫的訪問。通過ffi-napi模塊,在Vue.js中調用C ++的函數變得更加容易高效。
上一篇ejs能用vue框架
下一篇python 爬取tx