UDN-企业互联网技术人气社区

板块导航

浏览  : 529
回复  : 2

[Nodejs] 用C++扩展node.js(node-ffi版)

[复制链接]
cat77的头像 楼主
发表于 2017-1-3 15:06:47 | 显示全部楼层 |阅读模式
  0.先安装node.js和python(2.7)。请参考:


  1.新建一个demo项目: 创建demo目录,并进入其中,然后运行下面命令。
  1. mkdir demo
  2. cd  demo
  3. npm init
复制代码

  运行npm init时,之后会生成一个package.json(具体内容与输入参数有关):
  1. {
  2.   "name": "demo",
  3.   "version": "1.0.0",
  4.   "description": "a demo for node call native functions",
  5.   "main": "demo.js",
  6.   "scripts": {
  7.     "test": "echo \"Error: no test specified\" && exit 1"
  8.   },
  9.   "keywords": [
  10.     "node"
  11.   ],
  12.   "author": "Li XianJing",
  13.   "license": "ISC"
  14. }
复制代码

  2.安装编译工具和头文件。
  1. sudo npm install -g node-gyp
  2. npm install ffi bindings --save
复制代码

  3.用C++编写原生代码( 为了让目录结构整洁一点,我们把代码放到native只目录下)。

  下面的文件(native/demo.cc),添加一个Add方法,计算两个数之和:
  1. double Add(double a, double b) {
  2.     return a+b;
  3. }
复制代码

  4.写一个Makefile(native/Makefile), 用来编译C++代码。
  1. all:
  2.     $(CC) -g -shared  demo.c -o libdemo.dylib
  3. clean:
  4.     rm -frv libdemo*
复制代码

  5.编写一个JS文件(demo.js)),让它调用原生代码。
  1. var ffi = require('ffi');

  2. var demo = ffi.Library('./native/libdemo', {
  3.   'Add': [ 'double', [ 'double', 'double'] ]
  4. });
  5. console.log(demo.Add(12345, 54321));
复制代码

  7.编译C++程序。
  1. make -C native
复制代码

  8.运行JS代码,看看是否工作。
  1. node demo.js
复制代码

  参考:

  node-ffi

相关帖子

发表于 2017-1-3 15:07:16 | 显示全部楼层
个人觉得js是一种解释性语言,它提供了一个非常方便的开发过程,不需要编译,js与HTML标识结合在一起,从而方便用户的使用操作。
使用道具 举报

回复

发表于 2017-1-3 15:07:18 | 显示全部楼层
总觉得哪里有点问题啊
使用道具 举报

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部