c语言node程序,如何从Node.js调用C代码?
那么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代码?相关推荐
- rn在java中什么意思_[React Native Android 安利系列]RN中使用js调用java代码
欢迎大家收看react-native-android系列教程,跟着本系列教程学习,可以熟练掌握react-native-android的开发,你值得拥有: 书接上节,我们上节说道,如何控制原生andr ...
- Node.js调用C#代码
https://github.com/tjanczuk/edge 运行的时候会报 System.DllnotfoundException 无法加载node.dll,要把\packages\Edge.j ...
- js 调用后台代码(比较实用,好记)
JavaScript调用ASP.NET后台代码: 方法一: 1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中; 2.在前台写一个js函数,内容为docume ...
- js调用java代码返回解决方案
版权声明:本文为楼主原创文章,未经楼主允许不得转载,如要转载请注明来源. 今天封装一个加密标签,遇到一个问题,我需要对页面上的数据调用java后台代码进行解密,而标签里只能通过js获取到数据,所以就遇 ...
- js调用android代码怎么写,Android端使用WebView注入一段js代码实现js调用android
需求:为网页上个链接增加点击事件,但是这个链接无法增加js代码 url:http://public.rongcloud.cn/view/D4F444BE2D94D760329F3CF38B4AE35C ...
- Android开发笔记(六十四)网页加载与JS调用
内置浏览器 网页视图WebView 如果一个网站已经有现成的网页及业务逻辑,那么使用WebView将其内嵌到app中,省去了app重画页面与http通信的事情,无疑是更经济的做法.WebView就是A ...
- js 调用webservice接口
1:建立的webservice工程正确运行. a: 定义接口类 public interface IMyWebService { public String example(String messag ...
- js调用后台方法与后台调用js方法
JS调用后台方法大全 javascript函数中执行C#代码中的函数: 方法一:1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中; 2.在前台写一个js函数,内容为docu ...
- php程序监听node.js程序和go程序
一.前言 在公司的项目中,主要是用php作为服务端语言开发,但是对于区块链这个技术,提供的SDK一般都是node的,包括一些底层验证是通过go编写的,那么我们php该如何调用这些程序呢 二.使用fil ...
最新文章
- jquery图片播放切换插件
- 导师吐槽大会开始:自己招的学生,哭着也要带完
- 与其他CA合作签发证书 谷歌赛门铁克之争接近尾声
- 用python 10min手写一个简易的实时内存监控系统
- mupdf不支持x64_x86平台转x64平台关于内联汇编不再支持的解决
- android 标题栏进度圈使用方法,Android 自定义标题栏 显示网页加载进度的方法实例...
- Java 已老,Kotlin 或将取而代之!
- Multimedia Studio 系统要求
- 1018 锤子剪刀布
- python调用Java代码并执行--------jpype使用篇
- 微软Whitehorse modeler的背后
- 登录授权验证之OAuth2.0
- matlab混合copula,​MATLAB实战—最优Copula函数的选择
- Building QNX guests
- 用java语言编写选课系统_求用JAVA为我写一个简单的选课系统程序,实现增,删,改,查功能...
- Request和Response的概述及其方法
- 教育知识与能力·中学
- java多线程售票问题_使用java多线程实现火车站售票的问题
- 操作系统:操作系统的概念
- tslib: Selected device is not a touchscreen (must support ABS and KEY event types)解决方法
热门文章
- 上下定高 中间自适应_ADAS|驾驶辅助系统之自适应灯光照明系统
- 计算机如何搜索相关文字,搜索引擎:“请输入你要搜索的内容”|你是如何使用搜索引擎的呢?...
- python函数设置默认参数_Python教程如何设置函数的默认参数
- Java黑皮书课后题第11章:11.1(Triangle类)设计一个名为Triangle的类来继承GeometricObject类。该类包括:
- 作业一 郝树伟 1101210664
- Codeforces Round #448 (Div. 2)
- [转]MyBatis中resultType与resultMap区别
- spring AOP解析之xml方式详解
- Sql Server中三种字符串合并方法的性能比较
- 1463. Happiness to People!