我是 Javascript 和 V8 库的新手。我的要求是调用 C++ 函数并将 C 结构返回给 Javascript 模块。
struct empDetails {
int empNo;
string empName;
};
v8::Handle<v8::Value> getDetails(const v8::Arguments &args) {
if ((args.Length() != 1) || !args[0]->IsUint32()) {
return v8::ThrowException(v8::Exception::Error
(v8::String::New("Invalid> arguments.")));
}
uint32_t userId = args[0]->ToUint32()->Value();
empDetails e;
company::GetEmpdetails(userId, e); // other static function in my project
return e;
}
在返回语句中,我收到错误。谁能告诉我如何从 V8 C++ 函数返回结构。
最佳答案
您想创建 Javascript 对象并用您的数据填充它的每个成员。
#define function(name) v8::Handle<v8::Value> name(const v8::Arguments& a)
function (example_object) {
v8::HandleScope handle_scope;
Handle<Object> Result = Object::New();
Result->Set(String::New("name"), String::New("Stackoverflow"));
Result->Set(String::New("url"), String::New("http://stackoverflow.com"));
Result->Set(String::New("javascript_tagged"), Number::New(317566));
return handle_scope.Close(Result);
}
从 Javascript 调用:
log(JSON.stringify(example_object()))
输出
{"name":"Stackoverflow","url":"http://stackoverflow.com","javascript_tagged":317566}
关于javascript - 如何将结构从 V8 C++ 函数返回到 javascript 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13180783/