首页 > Note > electron 调用 c++ 踩坑笔记

electron 调用 c++ 踩坑笔记

当前的一个项目想使用 Electron 做个 Demo 来进行测试,在调用 C++ 时遇到了一些坑,踩坑的过程中发现网上踩这些坑的人还不少,踩完坑在这里顺手记录一下。

x86 OR x64

lib 的位数与 node.js 的位数必须一致,而和操作系统的位数无关,当然,32位的操作系统是无法运行64位的应用程序 的。

ps: 如何查文件是32位还是64位

  • 记得自己下载安装的是什么版本(废话)
  • Windows 下:可以使用 vs 自带的 SDK Tools, 执行命令:

查看输出的 PE 文件头信息:

32 位和64位是有区别的

  • 在 Linux, 则可以使用 file 命令直接查看:

使用版本正确的 ffi

使用默认源安装的 x86 版本的 ffi,在编译时可能会出现 Error: 'ForceSet': is not a member of 'v8::Object' .这个 issue 在 github 上出现很久了,现在还没有修复。替代解决方案为:在 package.json 中,将 ffi 的依赖改为:

再安装 ffi:

Rebuild ffi

ffi 安装后通常不能直接使用,需要本地编译到与 electron 相匹配的版本。编译 ffi 需要安装 node-gyp。而node.js 自带的常规 rebuild 通常不怎么好使,替代安装 prebuild:

ffi 加载库文件的路径

ffi 加载库文件 dll/so 的路径默认是 app 的 root 路径。一堆文件放在 root 下显得不怎么好看,可以使用以下文件将库文件放在任意位置:

目前就这么多,其它的遇到了再更新 ;-)

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.