Vue+Electron项目学习(三)electron-vue + ffi-napi 调用C++动态库

上篇文章我们已经实现调用C#的动态库文件,现在我们试试调用C++动态库文件。

  1. 安装windows-build-tools,这里注意需要使用管理员权限在命令窗口安装。
    npm install --global --production windows-build-tools

    注意:

    安装时会卡在 Successfully installed Python 2.7 的界面。
    解决如下:
    1、保证你安装了Visual Studio
    2、在资源管理中搜索%temp% ,window系统按住win按键直接搜索就可以
    3、在搜索到的文件夹%temp% 中创建dd_client_.log文件,并且填入内容
    Closing installer. Return code: 3010.
  2. 安装

    yarn add ffi-napi

    安装成功

     

  3. 构造调用dll的工具类

    const ffi = require("ffi-napi");
    const path = require("path");
    const testCpp = ffi.Library(path.resolve("resources/Pressure_Resize.dll"), {
        PR_SetSize: ["string", ["int"]],
        PR_Init: ["string", []],
        PR_Get: ["string", ["int", "int"]],
        PR_Get3DArray: ["string", []],
    });
    export default {
        prSetSize(s) {
            return testCpp.PR_SetSize(s);
        },
        prInit() {
            return testCpp.PR_Init();
        },
        prGet(args1, args2) {
            return testCpp.PR_Get(args1, args2);
        },
        prGet3DArray() {
            return testCpp.PR_Get3DArray();
        },
    };
    
  4. 渲染进程调用需要用到ipc,ipcMain的代码

     ipcMain.handle("prSetSize", (event, args) => {
            return new Promise((resolve, reject) => {
                return resolve(cpp.prSetSize(args));
            });
        });

    ipcRender的代码

    contextBridge.exposeInMainWorld("ipcInvoke", {
        prSetSize: args => {
            return ipcRenderer.invoke("prSetSize", args);
        },
    });

    vue调用代码

      window.ipcInvoke
                    .prSetSize(2)
                    .then((data) => {
                        log.debug("倍数结果:", data);
                    })
                    .catch((err) => {
                        log.debug("倍数失败:", err);
                    });

    这样直接启动会报错,记住vue.config.js需要增加配置

    module.exports = {
        pluginOptions: {
            electronBuilder: {
                preload: "src/preload.js",
                externals: ["ffi-napi"],
            },
        },
    };

  5. 调用成功截图

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值