【发布时间】:2020-11-22 20:44:10
【问题描述】:
我正在为 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 类型的经验吗?怎么做?
【问题讨论】:
-
错误信息
cannot convert argument 2 from "std::string" to "const char *"有什么不清楚的地方? -
很清楚,但我想将字符串(不是 const char *)转换为 v8::String(也不是 const char *)以将其提供给节点应用程序。
-
嗯..它的工作原理。非常感谢。我将阅读有关此功能的信息,以前从未使用过它。返回字符串现在有效。但是如何获取字符串(将 args[0] 中的 v8::String 转换为 std::string)
-
我阅读并尝试使用 writeUtf8,但它在此函数上给出了相同的错误:
function does not get 0 arguments
标签: c++ node.js string types v8