Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

NodeJS的C++插件(Windows环境)

  虽然NodeJS的文档上有提供一些C++的开发说明,但是还需要下载node-gyp之类的工具,感觉好繁琐。不就是编译个东西,搞那么麻烦干嘛?NodeJS的C++插件扩展名是node,实际上就是个DLL。我们只要把C++代码编译成DLL,然后直接修改文件名就行了。
  第一步
  到官网下载源码(http://nodejs.org/download/),并解压这个压缩包。
  第二步
  找到相应的头文件所在目录放入环境变量的INCLUDE字段中。由于Node和v8是两套不同的程序,所以我们需要把他们都加入环境变了。
    NodeJS源码\deps\v8\include
    NodeJS源码\src
  第三步
  到官网下载编译用的库文件(http://nodejs.org/dist/)。找到与下载版本对应的目录,下载里面的node.lib。比如我的版本是v0.10.20,那么就应该下载http://nodejs.org/dist/v0.10.20/node.lib
  第四步
  编写C++源文件,在源文件中用#pragma指令的comment方法引入上一步下载到的库,可以使用相对路径。最后调用编译器编译这个源文件。 //node_modules\test.cpp
#include <node.h>
#include <iostream>

#pragma comment(lib,"node.lib")

void main(v8::Handle<v8::Object> exports){
  std::cout<<"Hello World"<<std::endl;
}

NODE_MODULE(test,main)
//test.njs
require('test');

  cl.exe可以在微软的任何版本C++的目录中找到,不过编译参数可能有些不同,可以用/?命令查看。如果命令提示符中没有cl命令,可以把cl.exe所在目录加入环境变量的PATH字段中,并在INCLUDE和LIB中加入C++默认头文件和库文件的路径。如果直接使用VC或VS的话可以直接在可视化环境中配置,不过我习惯了命令行操作。
  编译完后可以得到DLL,然后使用rename命令把它重命名为test.node,注意文件名称要和程序里的模块名对应,否则无法正常工作。最后我们调用node,运行test.njs就能看到结果。
网名:
54.162.218.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^