node.js调用动态库
来源:互联网 发布:淘宝网 其他淘宝流量 编辑:程序博客网 时间:2024/06/11 13:31
网上找了一大堆,看起来都是可行的,实践时有很多问题,后边在列出部分问题,这里只说一下解决,那就是这些都写的是node.js V0.10.*之前的,现在我装的是v6.11.0
所以说文章还是要写清楚。
代码不复杂,这里分别列出:
C++ 动态库的程序
官方提到了,最重要的就是下面这里。
void Initialize(Local<Object> exports);NODE_MODULE(module_name, Initialize)
// hello.cc#include <node.h>namespace demo {using v8::FunctionCallbackInfo;using v8::Isolate;using v8::Local;using v8::Object;using v8::String;using v8::Value;void Method(const FunctionCallbackInfo<Value>& args) { Isolate* isolate = args.GetIsolate(); args.GetReturnValue().Set(String::NewFromUtf8(isolate, "world"));}void init(Local<Object> exports) { NODE_SET_METHOD(exports, "hello", Method);}NODE_MODULE(addon, init)} // namespace demo
在写一个binding.gyp 注意其中的addon和cc文件中结尾的NODE_MODULE的第一个参数一样,sources就不用多说了。
{ "targets": [ { "target_name": "addon", "sources": [ "hello.cc" ] } ]}
再准备一个调用的js 文件
// hello.jsconst addon = require('./build/Release/addon');console.log(addon.hello());// Prints: 'world'
路径将来可以改,由于这里编译后就是这个路径,就不改了。
好了,三个程序放到一个目录下
然后cmd进入这个目录,(这里是windows啊)
分别输入
node-gyp configure
node-gyp build
node hello.js
你就可以看到屏幕输出 world
什么,你出错了~~~~~,那要看看你准备的工具是不是全了,我装了vs2010和vs2015,其实这两个有一个就应该可以。在configure的时候可以指定。
node.js安装了,还要安装node-gyp,以及python2.7,不能是3.X以上的版本。这些有很多帖子可以介绍,我就不说了。
最后截图
这是成功的。
失败的图,因为代码用的是搜到的老版本的
看到这些,你要看看的C++代码是不是下面
#include <node.h>#include <v8.h>using namespace v8; // 这里是 hello 函数的 C++ 实现部分Handle<Value> Method(const Arguments& args) { HandleScope scope; return scope.Close(String::New("world"));} // 这里是模块的初始化函数,必须有void init(Handle<Object> exports) { exports->Set(String::NewSymbol("hello"), FunctionTemplate::New(Method)->GetFunction());} // 这里定义本模块的名字和初始化函数NODE_MODULE(hello, init)那恭喜了,你要么安装node.js v0.10以前的版本,要么就别看它了!!!!
阅读全文
0 0
- node.js调用动态库
- 通过ffi在node.js中调用动态链接库
- node-ffi之动态库调用
- node.js调用bat
- node.js调用模块
- Node.js调用函数
- Node.js调用模块
- js 动态调用 js
- node.js 读取动态文件
- node ffi调用C、C++动态库出现的问题
- js动态调用方法
- 动态调用JS
- js动态调用方法
- js方法动态调用
- 从HTML中调用Node.js
- node.js 调用 mongoose 的 aggregate 函数
- node.js调用C++说明文档
- Node.js调用本地摄像头拍摄上传
- SQL Server中,查询与修改数据库逻辑文件名,移动数据库存储路径示例
- 安卓Service无法启动的解决办法
- zookeeper的安装及php使用zookeeper
- hdu 1711 Number Sequence KMP入门题
- OpenCV中feature2D学习——SURF和SIFT算子实现特征点检测
- node.js调用动态库
- CUICatalog: Invalid asset name supplied:
- 51单片机最小系统板的绘制,完整版
- WebSphere连接池参数详解
- js form表单数据操作
- POSTMAN插件使用
- laravel post请求
- ubuntu搭建git服务器
- Unity场景中将鼠标图标隐藏掉的方法