zoukankan      html  css  js  c++  java
  • electron 加载C++扩展 调用 用C++扩展Electron(node-ffi版)

    https://blog.csdn.net/wang839305939/article/details/83780789

    https://blog.csdn.net/absurd/article/details/53856193  示例electron call c++ dll. 

    https://www.cnblogs.com/silenzio/p/11606389.html

    很多刚入门不久的小伙伴第一个问题可能就是electron能不能调用DLL动态库?这里给一个明确的答复是可以的。为什么?因为electron本身就集成了nodejs运行环境,而nodejs又是用C++实现的,相当于C++是他的原配。
          既然能调用,那么第二个问题来了,怎么调用?nodejs在官网也给出了方案addon有兴趣的可以看看,但是对于我们前端来说这个方案太过于复杂了,学习成本太高,如果没有c++开发背景还是另辟蹊径吧,electron是可以做到和C++混合开发的,如果团队中有C++的开发人员也可以尝试,结合C++本身的优势,开发出来的产品效果可能会更好,我们常用的IDE工具VSCode其实有部分功能也是使用C++来时实现的,这其中规避了一些electron的缺点。另一种调用DLL动态库的方案就是这里要重点介绍的模块node-ffi。
          其实这个模块时用起来非常的简单,先贴一段官方使用案例,简单加了几句注释:

    var ffi = require('ffi');//引入ffi模块
    /*
     *使用ffi模块将dll和js打通,可以把它看做是RPC(远程调用协议)
     *@libm 动态库的绝对地址例如"C://plugin/test.dll"
     *@ceil 动态库中方法的名称 double返回值的数据类型 ['double'] 这是函数输入参数的数据类型
     *这里提一下,应为C++是是属于强类型语言这个js不同,所以这里一定要指定返回参数和输入参数的类型
    */
    var libm = ffi.Library('libm', {
      'ceil': [ 'double', [ 'double' ] ]
    });
    //通过上面的注册的libm对象来调用dll中的ceil方法
    libm.ceil(1.5); // 2

    Electron内置的node.js,理论上可以通过扩展node.js来扩展Electron。但是通常由于系统中存在的node.js与Electron内置的node.js的版本号不同,给node.js编译的扩展是无法在Electron中使用的,需要一些特殊处理才行。

     ----------------------

    electron 获取命令行参数

    丸子叮咚响 2018-10-23 09:03:34 3081 收藏
    展开
    一 实现

    最近要做一个小工具,基于electron的独立进程,从平台中双击图标,能够启动electron,并且要携带一些必要的命令行参数。以为是个很简单的实现,但发现electron的文档中并没有说明。最后在atom的讨论网站中找到了一个答案,如下:

    1 假如你传的参数为arg1 arg2

    2 在electron的主进程中

    global.sharedObject = {prop1: process.argv}
    3 在electron的渲染进程中

    var remote = require('electron').remote,
    arguments = remote.getGlobal('sharedObject').prop1;

    console.log(arguments); // output : ["argv1", "argv2"]
    完成。当然,上面的示例代码可以灵活更改。
    ————————————————
    版权声明:本文为CSDN博主「丸子叮咚响」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/luoshabugui/article/details/83301698

  • 相关阅读:
    2021牛客暑期多校训练营5
    二分图知识点温习
    Codeforces Round #735 (Div. 2)
    牛客比赛订正(3,4)
    Harbour.Space Scholarship Contest 2021-2022 (Div. 1 + Div. 2) Editorial题解
    关于球的相关知识
    AtCoder Beginner Contest 210题解
    P7077 [CSP-S2020] 函数调用
    偏序问题学习笔记
    P1606 [USACO07FEB]Lilypad Pond G
  • 原文地址:https://www.cnblogs.com/bigben0123/p/13071738.html
Copyright © 2011-2022 走看看