在Electron中通过ffi模块实现JavaScript调用C++动态库

目前在网上能搜到的JS调C++动态库的实现有两种,一种是通过开发Node.js addon模块的方式实现调用,这种对于我们已有的代码实现比较复杂,需要大量的开发,因此不适用;另一种是通过FFI模块,FFI的全称是Foreign Function Interface,该项目生来就是解决NodeJS的本地调用问题的,其流程就相当于Windows下的LoadLibrary()和GetProcAddress(),亦可以理解为NodeJS下的平台调用。

 

1.安装ffi模块。ffi模块需要使用http://www.cnblogs.com/conorpai/p/6407010.html 方法进行安装,否则与Electron不匹配

2.需要封装的CAPI

ffi声明方式

调用方式

3.通过js调用C++回调函数。这种方法未在实际工作中使用到,所以未经实践检验,此处引用:http://stackoverflow.com/questions/36819679/node-fficall-c-lib-with-callback-function

4.使用ffi遇到最大的困难还是C与js的各种变量类型匹配,我们在工作中遇到的变量类型匹配将在下一个总结贴中列出

posted @ 2017-02-22 10:06  Conor白  阅读(7758)  评论(0编辑  收藏  举报