Tag: 加载项

用混合的C / C ++源文件构build一个NodeJS插件

我试图从混合的C / C ++源代码构build一个NodeJS插件。 我想避免将C代码构build为独立的共享库,尽pipe这是一个部分的解决scheme。 我得到的错误: Cannot guess how to process src:///home/chris/Dropbox/cbackend/data.c (got mappings ['.C', '.cc', '.cpp', '.c++', '.cxx'] in <class 'cxx.cxx_taskgen'>) -> try conf.check_tool(..)? 当我试图build立它。 如果我将.c文件重命名为.cc,并适当地更改wscript,则一切正常。 我已经尝试添加一个'compiler_c'的wscript,但它似乎并不可用。 这里是wscript: import os import Options srcdir = '.' blddir = 'build' VERSION = '0.3.0' def set_options(opt): opt.tool_options('compiler_cxx') def configure(conf): conf.check_tool('compiler_cxx') conf.check_tool('node_addon') conf.env.append_value('CCFLAGS', ['-O3']) conf.env.append_value('CXXFLAGS', ['-O3']) if Options.platform […]

ToCString的标题,或者如何将参数转换为cstrings?

我正在尝试在NodeJS插件中使用ToCString。 String::Utf8Value foo_utf8(args[0]->ToString()); const char *foo = ToCString(foo_utf8); 我找不到它的头,如果我手动将其原型为: const char* ToCString(const v8::String::Utf8Value& value); 那么我得到一个运行时错误: node: symbol lookup error: /home/chris/Dropbox/cbackend/build/Release/cbackend.node: undefined symbol: _Z9ToCStringRKN2v86String9Utf8ValueE 如何将V8string参数转换为以空字符结尾的8位Cstring?

如何访问nodejs插件中的包装对象属性

我在javascript中有以下代码: var c = new addon.Component(); c.ComponentLength = 3 我应该如何build立我的插件,所以我可以做以前的代码? 我已经按照http://nodejs.org/api/addons.html中的教程,但我卡在这里。 这可能吗? 有没有人有办法解决吗? 提前致谢。

引用Node.js模块

我现在开始学习与节点js,因为我正在与英特尔WebRTC SDK工作。 如果我想对现有的库进行一些修改或添加function,我该怎么做? 我需要创build模块还是直接更改文件? 如果有其他解决scheme,请指导我。 我目前正在改变图书馆本身的代码,我需要再次为他们的图书馆的新版本。 请指导我通过它。

node.js插件上未定义的符号

我正在尝试创build一些node.js插件。 在插件里面我有一个静态库的调用。 一切编译好,但是当我从JavaScript调用我的插件function,我得到以下内容: module.js:356 Module._extensions[extension](this, filename); ^ Error: /home/…/Projects/NodeAddonComLibTest/build/Debug/addon.node: undefined symbol: _Z6ctest1Pi at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> (/home/…/Projects/NodeAddonComLibTest/doTest.js:1:75) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Function.Module.runMain (module.js:497:10) 我的插件代码如下: #include <iostream> #include <string.h> #include <stdlib.h> #include <node.h> #include <v8.h> using namespace […]

当调用ObjectWrap :: Unwrap在一个Nodejs加载项时如何检查正确的types?

我有2个C ++类公开为JavaScript类, VanillaOption和NoomraEngine ,都从ObjectWrapinheritance。 在NoomraEngine的以下方法中,我应该收到一个以前“包装的” VanillaOption : Handle<Value> NoomraEngine::Price(const Arguments& args) { HandleScope scope; Local<Object> object = args[0]->ToObject(); // VanillaOption expected in args[0] VanillaOption* equityOption = ObjectWrap::Unwrap<VanillaOption>(object); Local<Number> x = Number::New(this->price(equityOption)); return scope.Close(x); } 一切工作正常,但如果我传递错误的types的方法,节点崩溃在ObjectWrap::Unwrap 。 我的问题是我如何确保我已经收到args[0]正确的types?