请问下nodejs c/c++ addon 如何返回Buffer?
发布于 9 年前 作者 arover 6170 次浏览 最后一次编辑是 8 年前 来自 问答

如题,项目里有个xtea加密解密的算法,是用C实现的,两个函数声明如下:

int encrypt(const char *plain, unsigned int plain_len, const char key[16], char *crypt, unsigned int * crypt_len )
int decrypt(const char *plain, unsigned int plain_len, const char key[16], char *crypt, unsigned int * crypt_len);

我尝试自己写一个addon,想传入参数(Buffer),加/解密完后用返回一个(Buffer)。 但是最新的nodejs c++代码有很大的变化,api都变了,网上的例子都很老,实在找不到可以参考的例子; node::Buffer创建buffer返回的都是MaybeLocal<v8::Object>类型,而MaybeLocal的toLocal函数又需要一个Local<S>* out参数, 至此完全没有头绪如何创建一个Local<S>*对象了。。。,请各位不吝指教!谢谢啦!

(头大,nodejs/iojs 文档真的太少了,看起来像是散文小说,。。。)

V8_WARN_UNUSED_RESULT V8_INLINE bool ToLocal(Local<S>* out) const 
// public constructor
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate, size_t length);
// public constructor from string
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
                                           v8::Handle<v8::String> string,
                                           enum encoding enc = UTF8);

// public constructor - data is used, callback is passed data on object gc
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
                                           char* data,
                                           size_t length,
                                           FreeCallback callback,
                                           void* hint);

// public constructor - data is used.
NODE_EXTERN v8::MaybeLocal<v8::Object> New(v8::Isolate* isolate,
                                           char* data,
                                           size_t len);
4 回复

用 NAN 吧。

@xadillax 感谢你的回答,不过毫无帮助。

我也觉得 都是看了官方github下面的example才看懂的 自豪地采用 CNodeJS ionic

@arover 用 NAN,并且它的文档上有详细说明,难道需要在什么位置详细点出来么?

https://github.com/nodejs/nan/blob/master/doc/buffers.md#api_nan_new_buffer

现在回答问题真的要把所有东西都弄得端端正正才有用处么?

回到顶部