Nodejs 使用 addons 调用c++ 初体验(一)

纠结很久,决定写一点遇到的“坑”。

基础环境:win7-64bit  node(v7.5.0)   这些安装实在是太方便了,自行准备吧。

1. 安装 python(2.7.x ),用npm安装 node-gyp(3.5.0),创建一个文件夹来存放 binding.gyp hello.cc test.js

binding.gyp 内容如下:

1 {
2   "targets": [
3     {
4       "target_name": "hello",
5       "sources": [ "hello.cc" ]
6     }
7   ]
8 }

hello.cc  内容如下:

 1 #include <v8.h>
 2 #include <node.h>
 3
 4 using namespace node;
 5 using namespace v8;
 6
 7 void Method(const v8::FunctionCallbackInfo<v8::Value>& args) {
 8 v8::Isolate* isolate = args.GetIsolate();
 9 v8::HandleScope scope(isolate);
10 args.GetReturnValue().Set(v8::String::NewFromUtf8(isolate, "Hello world"));
11 }
12
13 void init(v8::Local<v8::Object> target) {
14 NODE_SET_METHOD(target, "hello", Method);
15 }
16
17 NODE_MODULE(binding, init);

test.js 内容如下:

var addon = require(‘./build/Release/hello‘);
console.log(addon.hello());  

2. 直接执行 node-gyp configure build

3.尝试运行一下吧

补充:

node-gyp configure 如果失败就多尝试几次,毕竟有些站点链接太慢

node-gyp build 失败的话,对比一下 hello.cc (格外注意,hello.cc 以后可能编译不通过,随时关注一下 v8 ,及时修改一下)

时间: 2024-10-12 08:21:19

Nodejs 使用 addons 调用c++ 初体验(一)的相关文章

Java8初体验(二)Stream语法详解

原文链接:http://ifeve.com/stream/ 1. Stream初体验 我们先来看看Java里面是怎么定义Stream的: A sequence of elements supporting sequential and parallel aggregate operations. 我们来解读一下上面的那句话: Stream是元素的集合,这点让Stream看起来用些类似Iterator: 可以支持顺序和并行的对原Stream进行汇聚的操作: 大家可以把Stream当成一个高级版本的

WCF之初体验

什么是WCF? WCF的全称是:Windows通信基础(WindowsCommunication Foundation),本质来讲,他是一套软件开发包. WCF和WebService的区别 Webservice:严格来说是行业标准,不是一种技术,使用XML扩展标记语言来表示数据(这个是跨语言和平台的关键.) WCF其实一定程度上就是ASP.NET WebService,因为它支持Web Service的行业标准和核心协议,因此ASP.NET Web Service和WSE能做的事情,它几乎都能胜

Xamarin.iOS开发初体验

Xamarin是一个跨平台开发框架,这一框架的特点是支持用C#开发IOS.Android.Windows Phone和Mac应用,这套框架底层是用Mono实现的. Mono是一款基于.NET框架的开源工程,包含C#语言编译器.CLR运行时和一组类库,能运行于Windows.Linux.Unix.Mac OS和Solaris.对于.NET程序员来说,Xamarin是走向安卓.iOS.Mac跨平台开发的神器,不仅能用熟悉的C#来开发,还能使用Visual Studio作为IDE.本文内容是Xamar

KVM之初体验——手动及自动化安装KVM脚本

一,什么是KVM KVM包括很多部件:首先,它是一个Linux内核模块(现在包括在主线中)用于转换处理器到一种新的用户 (guset) 模式.用户模式有自己的ring状态集合,但是特权ring0的指令会陷入到管理器(hypervisor)的代码.由于这是一个新的处理器执行模型,代 码不需要任何的改动.   除了处理器状态转换,这个内核模块同样处理很小一部分低层次的模拟,比如MMU注册(用于管理VM)和一部分PCI模拟的硬件. 在可预见的未来,Qemu团队专注于硬件模拟和可移植性,同时KVM团队专

SignalR初体验

简介 ASP .NET SignalR[1]  是一个ASP .NET 下的类库,可以在ASP .NET 的Web项目中实现实时通信.什么是实时通信的Web呢?就是让客户端(Web页面)和服务器端可以互相通知消息及调用方法,当然这是实时操作的. 1.环境部署 首先新建一个mvc项目,通过Nuget获取相应SignalR包.使用Nuget的命令模式,直接输入 Install-Package Microsoft.AspNet.SignalR -Version 1.0.1 由于最新版本需要Net Fr

JNI笔记之 初体验

Java Native Interface提供了java与c语言写的代码之间互相调用的方式.在c语言方面jni.h中声明了许多的类型和方法,有很多java的数据类型和c语言类型的转换方法函数. java里的int,String,byte[]等对应于C方面的jint,jstring,jbyteArray.int可以直接赋给jint型的变量. Java的String和C++的string是不能对等起来的,所以jstring的操作较为繁琐,通常可转为c里面的char *,有两种方式,先上简单的: JN

屌丝就爱尝鲜头——java8初体验

Java8已经推出,让我们看看他的魅力.让我们看看他改变较大的部分. 一.java8概述 Java8是由Oracle(甲骨文)公司与2014年3月27日正式推出的.Java8同时推出有3套语言系统,分别是Java SE8.Java SE Emebbled 8.Java ME8. Java SE8较以往的系统增强的功能有: ①增强了对集合式操作语言--lambda表达式的支持,"Lambda 表达式"(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演

Shell脚本编程初体验

Shell脚本编程初体验 分类 编程技术 通 常,当人们提到"shell脚本语言"时,浮现在他们脑海中是bash,ksh,sh或者其它相类似的linux/unix脚本语言.脚本语言是与计算机 交流的另外一种途径.使用图形化窗口界面(不管是windows还是linux都无所谓)用户可以移动鼠标并点击各种对象,比如按钮.列表.选框等等.但 这种方式在每次用户想要计算机/服务器完成相同任务时(比如说批量转换照片,或者下载新的电影.mp3等)却是十分不方便.要想让所有这些事情变得简单并 且自动

bash编程初体验之for

bash编程初体验之for for while until 概述 本文将介绍以for为代表的循环语句在shell 脚本中的应用,常见的循环语句有for, while, until,作为循环语句,顾名思义,它就是重复地做一件事,直到满足某一条件而退出:另外,还有两个循环控制语句continue与break来配合循环语句,以实现临时中断或跳出循环的功能:以下为for, while, until的知识点提炼: for, while, until 进入条件          for: 列表元素非空