electron 1.2.5 调用本地c++模块

作者: admin 日期: 2016-07-02 17:21:11 人气: - 评论: 0

本来以为electron是把nodejs和谷歌浏览器整个的一个项目,所以electron调用c++模块的方式应该是和nodejs调用c++模块的方式是一样的,先后使用了vs2013、node-gyp编译了一个node c++ addon ,在node环境下可以被调用,在electron下各种报错,最先开始怀疑自己的编译环境有问题于是下载了个 node-ffi模块,结果安装之后electron还是无法调用,开始怀疑electron和node其实并不完全兼容,各种百度谷歌无结果,遂上github给electron作者提问,没想要作者很快就回复了,承认electron不能直接调用node的c++ addon,要拿到electron的头文件还有库文件重新编译node c++ addon 并给出了相关文档:

http://electron.atom.io/docs/tutorial/using-native-node-modules/

按照这个文档的描述,electron要调用本地c++模块有三种方案


1、使用npm

通过设置几个环境变量可以直接使用npm安装依赖的模块

下面是一个为electron安装所有依赖的例子

# Electron's version.

export npm_config_target=1.2.3

# The architecture of Electron, can be ia32 or x64.

export npm_config_arch=x64

# Download headers for Electron.

export npm_config_disturl=https://atom.io/download/atom-shell

# Tell node-pre-gyp that we are building for Electron.

export npm_config_runtime=electron

# Tell node-pre-gyp to build module from source code.

export npm_config_build_from_source=true

# Install all dependencies, and store cache to ~/.electron-gyp.

HOME=~/.electron-gyp npm install


其实熟悉node的人应该知道如果安装一个node模块里面包含了c++代码,在安装的时候会调用node-gyp去编译,在编译之前node-gyp会读取本地的node版本去下载相应的头文件还有库文件,以上的配置就是强制gyp编译的时候去下载electron的头文件和库文件,最后编译出可以被electron识别的模块


2、使用electron-rebuild模块

首先要下载electron-rebuild模块,这个模块会完成读取本地electron版本,下载需要的头文件和重编译的工作

安装electron-rebuild然后重建模块的一个例子:

npm install --save-dev electron-rebuild

# Every time you run "npm install", run this:

./node_modules/.bin/electron-rebuild

# On Windows if you have trouble, try:

.\node_modules\.bin\electron-rebuild.cmd

大概操作就是在你的electron项目下面先用npm安装 electron-rebuild模块,然后你每次使用npm安装了新模块之后就执行下这个项目下面的electron-rebuild模块,这样你新安装的模块就可以被electron顺利调用了,感觉这个方案其实和方案1没太大的区别,原因后面会说到



3、手动编译electron

如果你是一个开发人员(毫无疑问,肯定是)开发了一个针对electron的本地模块并想对该模块进行测试,你可能想要手动重新编译该electron 模块(这里说的就是我遇到的情况呀!),你可以直接使用node-pyp 编译 electron


cd /path-to-module/

HOME=~/.electron-gyp node-gyp rebuild --target=1.2.3 --arch=x64 --dist-url=https://atom.io/download/atom-shell


我在windows下具体操作方式就是先进入插件目录然后执行

node-gyp rebuild --target=1.2.5 --arch=ia32 --dist-url=https://atom.io/download/atom-shell

就编译成功了

相关内容

发表评论
更多 网友评论0 条评论)
暂无评论

Copyright © 2012-2014 我的代码板 Inc. 保留所有权利。

页面耗时0.0255秒, 内存占用1.84 MB, 访问数据库13次

闽ICP备15009223号-1