1

我正在尝试在 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

如何将 V8 字符串参数转换为以 null 结尾的 8 位 C 字符串?

4

2 回答 2

1

我找到了一种解决方法,因为 ToCString 函数(无论它位于何处)都是微不足道的。只需添加:

const char* ToCString(const v8::String::Utf8Value& value) {
  return *value ? *value : "<string conversion failed>";
}
于 2012-06-25T14:47:05.280 回答
0

按照文档,v8 具有用于 cstr 转换的运算符:

Local<Value> value = get_value();     // nan† thing, you can ignore this

v8::String::Utf8Value string(value);
char* str = *string;                  // defined as:        char * operator* () 
const char* const_str = *string;      // defined as:  const char * operator* () const 

这适用于 njs v0.10 和 v0.11。

†</sup> https://github.com/rvagg/nan

于 2014-12-29T11:55:13.183 回答