文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
编译原生模块
如何实现在 Windows 环境下,编译 src/native/clipboard.cc 源码,在 Mac 环境下编译 src/native/clipboard.mm?
编译配置文件:src/native/binding.gyp 最后一个配置节提供了配置能力。这个配置节的作用是在操作系统不同时('OS=="mac"'),指定不同的源码文件(sources)、依赖库(libraries)和编译工具(msvs_settings、xcode_settings)。
现在执行如下指令来生成构建工程:
node-gyp configure
构建好工程之后,尝试使用如下命令来编译这个原生模块。
node-gyp build
如果在命令行环境中看到彩色的 gyp info ok 这行信息,说明原生模块已经编译成功了,它被放置在 build/Release/addon.node 路径下。
接下来写一段 JavaScript 代码,测试一下这个原生模块。
//src\native\test.js
let native = require("./build/Release/addon.node");
let paths = native.readFilePaths();
console.log(paths);
先复制几个文件,然后使用如下命令执行这个测试脚本:
node test.js
看看你复制的文件路径是不是已经打印到控制台上了呢?
上面编译出的原生模块不一定能在 Electron 应用中正常工作。这是因为 Electron 内置的 Node.js 的版本可能与你编译原生模块使用的 Node.js 的版本不同。如果在 Electron 工程内使用原生模块时,碰到如下错误:
Error: The module '/path/to/native/module.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION $XYZ. This version of Node.js requires
NODE_MODULE_VERSION $ABC. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
则说明你使用的原生模块与 Electron 的 ABI 不匹配,此时就要针对 Electron 内置的 ABI 来编译你的原生模块。
使用方法与编译 SQLite 原生模块时相同,如下指令所示:
electron-rebuild -f -m ./src/native
现在编译出的原生模块就可以在 Electron 工程下正常使用了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论