又踩坑了,配置永远比单纯的写代码要更花费时间。也更令人挫败。简单记一笔吧。
最近在弄的一个视频拼接的npm包,就有C++扩展,npm install 的时候屡屡不成功,后来总算成功了。实际引入的时候又找不到入口。排查了一下就是里面用到了C++扩展,需要重新编译。后来全局装了node-gyp对着报错把包一个个编译了一遍,终于成功了。
以下是一些知识点:
C/C++对比javascript在位运算上具有极大优势,很多转码、编码的功能可以用C/C++扩展来提升性能。
C++模块通过预先编译为.node文件,然后调用process.dlopen() 加载执行。.node文件实际上在不同平台下是不一样的。如图。
*nix | windows
C/C++源码
g++/gcc编译成.node文件(.so文件) | VC++编译成.node文件(.dll文件)
dlopen加载.node文件导出给javascript
gyp的意思是generate your projects。node-gyp是一个node的扩展构建工具,通过npm install -g node-gyp安装。写好.gyp项目编译文件后,它会自动按这个文件进行编译。该文件被约定为binding.gyp。一个简单的binding.gyp长这样:
{
"targets": [
{
"target_name":

本文记录了一次使用带有C++扩展的npm包的经历,包括解决npminstall失败的问题、编译C++扩展的方法及注意事项。介绍了C/C++在位运算上的优势及其在性能提升方面的作用。
最低0.47元/天 解锁文章
1321

被折叠的 条评论
为什么被折叠?



