在window7下使用C++来给node.js编写扩展模块的方法

   在window7下使用C++来给node.js编写扩展模块的方法

          本文给大家介绍的是在window7下使用C++来给node.js编写扩展模块的方法,附上一个简单的hello实例,有需要的小伙伴可以参考下。

  前提: 安装好node.js、Python2.7与visual studio 2013。

  过程:

  首先安装GYP项目生成工具,npm install -g node-gyp 。

  建立test目录,这是我们的工作目录,在此目录下再建一个src目录,用来存放C++源代码,另新建一个名为binding.gyp的文本文件,这是gyp的项目文件,内容如下:

   代码如下:

  {

  'targets':[{

  'target_name':'hello',

  'sources':['src/hello.cc']

  }]

  }

  再写一个简单的hello.cc,内容如下:

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13

#include <node.h>
using namespace v8;
 
Handle<Value> Hello(const Arguments& args) {
HandleScope scope;
return scope.Close(String::New("Hello world!"));
}
 
void init(Handle<Object> target) {
NODE_SET_METHOD(target, "hello", Hello);
}
 
NODE_MODULE(hello, init)

  然后运行命令: node-gyp configure

  如果正确运行的话,会出现一个目录----build,其下为你生成了vs2013的项目文件,这样就可以在vs2013中进行编辑与编译了。

  当然也可以直接用命令 node-gyp build进行编译。

  测试js程序如下:

  代码如下:

  var hello = require('./hello');

  console.log(hello.hello());

  其中遇到了一些问题,记录如下:

  1、C:UsersAdministrator.node-gyp.10.33这个目录下,没有默认Debug目录,在vs2013中编译成debug文件时会提示 error LNK1104: cannot open file 'C:UsersAdministrator.node-gyp.10.33Debugnode.lib' ,建立一个Debug目录,把与你操作系统环境相同的目录下的node.lib拷贝到其中就好了。

  2、NODE_MODULE(hello, init)中的hello是模块名,需要与文件名保持一致,不然编译没问题,运行时会出错。因为在require('./hello.node')时,既去找相应的文件,也匹配对应的MODULE。

  3、我是对应着朴灵的《深入浅出node.js》这本书,并参考一些网页进行学习的,书给出的gyp项目文件中有一个conditions项,'libraries' : ['-lnode.lib'] ,因为这一句,编译时一直报错:can't open node.lib,明明文件是存在的,但就是报错,找了很多资料,也没解决,后来我把node.lib直接拷贝到工作目录下,用命令行编译成功了!但在vs2013中,错误还是依旧,我怎么想都不对,最后上官网,发现人家的例子都没有给出这种参数,我就试着把这个东东删除了,结果一切OK!大神们,谁能给出一个正确的解释?!

  以上所述上就是本文的全部内容了,希望大家能够喜欢。

时间: 2024-11-03 12:12:04

在window7下使用C++来给node.js编写扩展模块的方法的相关文章

使用Meteor配合Node.js编写实时聊天应用的范例

  这篇文章主要介绍了使用Meteor配合Node.js编写实时聊天应用的范例,Node.js作为异步框架,其最突出的使用便是用来编写实时应用程序,需要的朋友可以参考下 我经常见到被拿来与Derby.js做比较的框架是Meteor.js. 与Derby相似的是,它也能在多个客户端下实时更新views, 尽管做法上可能跟Derby有点不同. Derby可以较容易的使用多种数据库, 而Meteor则只亲近于MongoDB. 事实上, 通过如Mongoose客户端接入数据库的API与你在服务端所期望的

Node.js编写组件的三种实现方式_node.js

首先介绍使用v8 API跟使用swig框架的不同: (1)v8 API方式为官方提供的原生方法,功能强大而完善,缺点是需要熟悉v8 API,编写起来比较麻烦,是js强相关的,不容易支持其它脚本语言. (2)swig为第三方支持,一个强大的组件开发工具,支持为python.lua.js等多种常见脚本语言生成C++组件包装代码,swig使用者只需要编写C++代码和swig配置文件即可开发各种脚本语言的C++组件,不需要了解各种脚本语言的组件开发框架,缺点是不支持javascript的回调,文档和de

CentOS 7下安装Node.js的几种方法

一.源码安装 1.下载源码(官网查看最新版本链接) wget http://nodejs.org/dist/v0.10.30/node-v0.10.30.tar.gz 2.解压源码 tar xzvf node-v* && cd node-v* 3.安装必要的编译软件 sudo yum install gcc gcc-c++ 4.编译 ./configure make 5.编译&安装 sudo make install 6.查看版本(测试安装是否成功) node --version

使用C++为node.js写扩展模块_node.js

前提: 安装好node.js.Python2.7与visual studio 2013. 过程: 首先安装GYP项目生成工具,npm install -g node-gyp . 建立test目录,这是我们的工作目录,在此目录下再建一个src目录,用来存放C++源代码,另新建一个名为binding.gyp的文本文件,这是gyp的项目文件,内容如下: 复制代码 代码如下: {     'targets':[{         'target_name':'hello',         'sourc

Node.js编写爬虫的基本思路及抓取百度图片的实例分享_node.js

其实写爬虫的思路十分简单: 按照一定的规律发送 HTTP 请求获得页面 HTML 源码(必要时需要加上一定的 HTTP 头信息,比如 cookie 或 referer 之类) 利用正则匹配或第三方模块解析 HTML 代码,提取有效数据 将数据持久化到数据库中 但是真正写起这个爬虫来,我还是遇到了很多的问题(和自己的基础不扎实也有很大的关系,node.js 并没有怎么认真的学过).主要还是 node.js 的异步和回调知识没有完全掌握,导致在写代码的过程中走了很多弯路. 模块化 模块化对于 nod

node.js中EventEmitter使用方法

EventEmitter是什么? Node.js里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStream对象会在文件被打开的时候发出一个事件. 所有这些产生事件的对象都是 events.EventEmitter 的实例. EventEmitter对象在使用时,必须先引入events 模块,如下代码:  代码如下 复制代码 var event=require("events"); //创建EventEmitter对象 var

阿里云服务器安装 Node.js/Nginx/MySQL的方法介绍

安装 Node 说明 首先你要已经有阿里云服务器了! 此系列教程以阿里云服务器 + Ubuntu 12.04 LTS 操作系统为例. 由于 Ubuntu 12.04 LTS 发行版所对应的软件仓库中的 Node.js 版本为 0.6.x,不能满足 Ghost 对 Node.js 的要求,因此,我们从 Chris-lea 仓库中安装最新版本的 Node.js. 阿里云服务器默认提供的账号是 root 账号,执行指令时可以不用加 sudo,但是出于习惯,还是带上吧. 开始安装 登陆阿里云服务器 建议

使用Meteor配合Node.js编写实时聊天应用的范例_node.js

我经常见到被拿来与Derby.js做比较的框架是Meteor.js. 与Derby相似的是,它也能在多个客户端下实时更新views, 尽管做法上可能跟Derby有点不同. Derby可以较容易的使用多种数据库, 而Meteor则只亲近于MongoDB. 事实上, 通过如Mongoose客户端接入数据库的API与你在服务端所期望的已经非常接近了. 虽然现在meteor是个有一些缺点和争议的框架, 但Meteor看起来是非常有趣的选择用来建立有实时需求的应用. 个人还是喜欢Derby基于传统回调的编

在Mac OS下使用Node.js的简单教程

  这篇文章主要介绍了在Mac OS下使用Node.js的简单教程,Node.js是让JavaScript应用运行于服务器端的框架,需要的朋友可以参考下 这里有一篇很好的 Node.js 介绍文章 great nodejs intro ,它将给你一个非常方便的介绍 Node.js 和 CouchDB,并给出一个实例实现 REST 的服务用于执行书签的 CRUD 操作,使用 CouchDB 作为数据库. 本文将介绍在 Mac OS X 下安装并开始使用 Node.js ,这个过程大概需要 30 分