那么V8允许从

JavaScript调用C代码.

所以你可以有3部分代码:

>正常C,不知道node.js和V8.这将是世界的地方.

> Glue node.js / V8-C代码,允许JS“查看”你的世界类的部分.

>正常的JavaScript代码,它通过“胶”层与C端进行通信

从上面的幻灯片链接:

#include

#include

using namespace v8;

extern "C" {

static void init(Handle target) {}

NODE_MODULE(module_name, init)

}

我们可以把它扩展到更接近你想要的东西:

SRC / world.h

#ifndef WORLD_H_

#define WORLD_H_

class World {

public:

void update();

};

extern World MyWorld;

#endif

SRC / world.cpp

#include "world.h"

#include

using std::cout;

using std::endl;

World MyWorld;

void World::update() {

cout << "Updating World" << endl;

}

SRC / bind.cpp

#include

#include

#include "world.h"

using namespace v8;

static Handle UpdateBinding(const Arguments& args) {

HandleScope scope;

MyWorld.update();

return Undefined();

}

static Persistent updateFunction;

extern "C" {

static void init(Handle obj) {

v8::HandleScope scope;

Local updateTemplate = FunctionTemplate::New(UpdateBinding);

updateFunction = v8::Persistent::New(updateTemplate);

obj->Set(String::NewSymbol("update"), updateFunction->GetFunction());

}

NODE_MODULE(world, init)

}

演示/ demo.js

var world = require('../build/Release/world.node');

world.update();

WScript的

def set_options(opt):

opt.tool_options("compiler_cxx")

def configure(conf):

conf.check_tool("compiler_cxx")

conf.check_tool("node_addon")

def build(bld):

obj = bld.new_task_gen("cxx", "shlib", "node_addon")

obj.cxxflags = ["-g", "-D_FILE_OFFSET_BITS=64", "-D_LARGEFILE_SOURCE", "-Wall"]

# This is the name of our extension.

obj.target = "world"

obj.source = "src/world.cpp src/bind.cpp"

obj.uselib = []

在Linux shell上,有些设置:

node-waf configure

要建立,运行:

node-waf

去测试:

node demo/demo.js

输出:

Updating World

c语言node程序,如何从Node.js调用C代码?相关推荐

  1. rn在java中什么意思_[React Native Android 安利系列]RN中使用js调用java代码

    欢迎大家收看react-native-android系列教程,跟着本系列教程学习,可以熟练掌握react-native-android的开发,你值得拥有: 书接上节,我们上节说道,如何控制原生andr ...

  2. Node.js调用C#代码

    https://github.com/tjanczuk/edge 运行的时候会报 System.DllnotfoundException 无法加载node.dll,要把\packages\Edge.j ...

  3. js 调用后台代码(比较实用,好记)

    JavaScript调用ASP.NET后台代码: 方法一:         1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中; 2.在前台写一个js函数,内容为docume ...

  4. js调用java代码返回解决方案

    版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源. 今天封装一个加密标签,遇到一个问题,我需要对页面上的数据调用java后台代码进行解密,而标签里只能通过js获取到数据,所以就遇 ...

  5. js调用android代码怎么写,Android端使用WebView注入一段js代码实现js调用android

    需求:为网页上个链接增加点击事件,但是这个链接无法增加js代码 url:http://public.rongcloud.cn/view/D4F444BE2D94D760329F3CF38B4AE35C ...

  6. Android开发笔记(六十四)网页加载与JS调用

    内置浏览器 网页视图WebView 如果一个网站已经有现成的网页及业务逻辑,那么使用WebView将其内嵌到app中,省去了app重画页面与http通信的事情,无疑是更经济的做法.WebView就是A ...

  7. js 调用webservice接口

    1:建立的webservice工程正确运行. a: 定义接口类 public interface IMyWebService { public String example(String messag ...

  8. js调用后台方法与后台调用js方法

    JS调用后台方法大全 javascript函数中执行C#代码中的函数: 方法一:1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中; 2.在前台写一个js函数,内容为docu ...

  9. php程序监听node.js程序和go程序

    一.前言 在公司的项目中,主要是用php作为服务端语言开发,但是对于区块链这个技术,提供的SDK一般都是node的,包括一些底层验证是通过go编写的,那么我们php该如何调用这些程序呢 二.使用fil ...

最新文章

  1. jquery图片播放切换插件
  2. 导师吐槽大会开始:自己招的学生,哭着也要带完
  3. 与其他CA合作签发证书 谷歌赛门铁克之争接近尾声
  4. 用python 10min手写一个简易的实时内存监控系统
  5. mupdf不支持x64_x86平台转x64平台关于内联汇编不再支持的解决
  6. android 标题栏进度圈使用方法,Android 自定义标题栏 显示网页加载进度的方法实例...
  7. Java 已老,Kotlin 或将取而代之!
  8. Multimedia Studio 系统要求
  9. 1018 锤子剪刀布
  10. python调用Java代码并执行--------jpype使用篇
  11. 微软Whitehorse modeler的背后
  12. 登录授权验证之OAuth2.0
  13. matlab混合copula,​MATLAB实战—最优Copula函数的选择
  14. Building QNX guests
  15. 用java语言编写选课系统_求用JAVA为我写一个简单的选课系统程序,实现增,删,改,查功能...
  16. Request和Response的概述及其方法
  17. 教育知识与能力·中学
  18. java多线程售票问题_使用java多线程实现火车站售票的问题
  19. 操作系统:操作系统的概念
  20. tslib: Selected device is not a touchscreen (must support ABS and KEY event types)解决方法

热门文章

  1. 上下定高 中间自适应_ADAS|驾驶辅助系统之自适应灯光照明系统
  2. 计算机如何搜索相关文字,搜索引擎:“请输入你要搜索的内容”|你是如何使用搜索引擎的呢?...
  3. python函数设置默认参数_Python教程如何设置函数的默认参数
  4. Java黑皮书课后题第11章:11.1(Triangle类)设计一个名为Triangle的类来继承GeometricObject类。该类包括:
  5. 作业一 郝树伟 1101210664
  6. Codeforces Round #448 (Div. 2)
  7. [转]MyBatis中resultType与resultMap区别
  8. spring AOP解析之xml方式详解
  9. Sql Server中三种字符串合并方法的性能比较
  10. 1463. Happiness to People!