windows下编写nodejs扩展

作者: admin 日期: 2016-06-29 18:55:12 人气: - 评论: 0

1、先下载nodejs源码包解压

2、安装Python2.x,我安装的是2.7版本

3、node-gyp一般高版本的node都自带了,为了保险起见执行npm install -g node-gyp 安装一下

4、用cmd进入node源码目录执行vcbuild.bat release开始编译,我的电脑安装的是vs2013顺利编译在release目录下面顺利生成node.exe

5、根据网上的教程制作noins.bat 文件放在node源码根目录下

@echo off

if "%1"=="" goto help

mkdir "%1"

mkdir "%1"\include


copy /y src\node.h "%1"\include

copy /y src\node_object_wrap.h "%1"\include

copy /y src\node_buffer.h "%1"\include

copy /y src\node_version.h "%1"\include


copy /y deps\v8\include\*.h "%1"\include\


copy /y deps\uv\include\*.h "%1"\include\


mkdir "%1"\include\uv-private

copy /y deps\uv\include\uv-private\*.h "%1"\include\uv-private


mkdir "%1"\include\ev

copy /y deps\uv\src\ev\*.h "%1"\include\ev


mkdir "%1"\include\c-ares

copy /y deps\uv\include\ares.h "%1"\include\c-ares

copy /y deps\uv\include\ares_version.h "%1"\include\c-ares


mkdir "%1"\lib

copy /y Release\node.lib "%1"\lib


copy /y Release\node.exe "%1"


echo =================================

echo Install succeefully!

goto exit


if not errorlevel 0 echo Error "install-path" & goto exit


:help

echo nodins.bat install-path


:exit


看的不是很懂,好像就是从原来的目录复制文件

6、进入node源码目录执行nodins.bat e:\nodejs,执行成功

我的e:\nodejs如下,里面应该已经包含了开发node扩展需要的头文件和库文件

7、使用vc新建项目我的是vs2013

8、新建个cpp文件输入下面的代码

#define BUILDING_NODE_EXTENSION

#include <node.h>

using namespace v8;


void getstring(const FunctionCallbackInfo<Value>& args) {

Isolate* isolate = Isolate::GetCurrent();

HandleScope scope(isolate);

args.GetReturnValue().Set(String::NewFromUtf8(isolate, "hello world"));

}


void Init(Handle<Object> exports) {

NODE_SET_METHOD(exports, "getstring", getstring);

}


NODE_MODULE(dbr, Init)


9、在工程属性的配置属性-常规中将输出目录改为.\; 


10、在工程属性的配置属性-常规中将目标文件扩展名改为.node; 


11、在工程属性的配置属性-C/C++-常规-附加包含目录添加头文件目


12、在工程属性的配置属性-链接器-常规-附加库目录添加目录


13、在工程属性的配置属性-链接器-输入-附加依赖项添加lib库:node.lib 


14、编译成功之后在项目目录下面生成一个.node文件

15、在项目目录下面新建一个test.js文件

var a = require("./Win32Project3/Win32Project3.node")
var b = a.getstring()
console.log(b)

我下载的node源码包是4.4.7版本的node本地版本是4.2使用本地node执行test.js之后成功在控制台输出

hello word


不过下载了最新版本的node v6.2.2之后失败,不知道是头文件太旧了还是我的写法有问题,有待继续研究

相关内容

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

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

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

闽ICP备15009223号-1