我正在为node.js做一个c++插件,我正在努力传递和获取数据。我知道如何将v8::Number转换为double,将double转换为v8::Number,将int转换为v8:Number,但我还需要更多。主要是,将v8::String转换为std::string并返回,将v8::Number转换为int,将v8::Array转换为Array并返回。此外,将js对象转移到一些c++变量也很好,但这并不是很必要。有人知道该怎么做吗?附注:我看了一遍文档,我没有找到任何关于数组和对象的东西,只找到了这个根据字符串的string a (*v8::String::Utf8Value(args[0]->ToString()))
。但是它不工作,我得到一个错误error C2660: v8::Value::ToString: function does not get 0 arguments
和error C2512: v8::String::Utf8Value: no suitable default constructor
。我没有更多的想法来实现它。有人能帮帮忙吗?我也尝试过从c++返回数据。在这种情况下,它是有效的,但如果我这样做:args.GetReturnValue().Set(v8::String::NewFromUtf8(isolate, "world").ToLocalChecked());
:
string s = "world";
args.GetReturnValue().Set(v8::String::NewFromUtf8(isolate, s).ToLocalChecked());
我得到一个错误error C2664: "v8::MaybeLocal<v8::String> v8::String::NewFromUtf8(v8::Isolate *,const char *,v8::NewStringType,int)": cannot convert argument 2 from "std::string" to "const char *"
我不知道这里出了什么问题。如果有人有使用c++插件和v8类型的经验,该怎么做呢?
发布于 2020-08-02 20:52:54
为了理解v8::String
,文档的最新版本帮助:https://v8docs.nodesource.com/node-14.1/d4/d1b/classv8_1_1_string_1_1_utf8_value.html (与Node0.8时代相比,一些签名发生了一些变化--如果您想要使用C++进行开发,强烈建议您学习如何理解编译器的错误消息!)。
要了解std::string
,请参阅一些C++文档,例如:https://en.cppreference.com/w/cpp/string/basic_string
如果你需要一个实际的例子,你可以看看V8的samples/process.cc
,它有一个将任何JS对象(例如v8::String
)转换成std::string
的函数ObjectToString
。只有两行!
https://stackoverflow.com/questions/63218322
复制