我正在尝试在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 字符串参数转换为以空值结尾的 8 位 C 字符串?
我找到了解决方法,因为ToCString函数(无论它位于何处)都是微不足道的。 只需添加:
const char* ToCString(const v8::String::Utf8Value& value) {
return *value ? *value : "<string conversion failed>";
}
根据文档,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。
†https://github.com/rvagg/nan