javascript - 如何将结构从 V8 C++ 函数返回到 javascript 模块

标签 javascript visual-c++ v8

我是 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/

相关文章:

C++ 从 linux 到 windows : 'does not evaluate to a constant'

javascript - jQuery:使用 substr() 执行此操作的替代方法

javascript - 显示/隐藏 div 显示暴露 div 的底部

javascript - 组条件的正则表达式

mysql - C++ Mysql 变量值发送到数据库时发生变化

JavaScript - 为什么使用初始参数调用函数更快?

javascript - 连接两个 AJAX 请求返回到 1 个数组

c - "expression must have a constant value" Visual Studio 错误 E0028

node.js - 使用 v8 和 node.js 的多处理器

javascript - array[index] === undefined 是否始终与 typeof array[index] === 'undefined' 相同?