【问题标题】:How to bind a c function with out parameters in v8?如何在 v8 中绑定带有 out 参数的 c 函数?
【发布时间】:2018-12-02 14:23:54
【问题描述】:

C 函数:

void foo(int* p){
    *p = 10;
}

和js调用:

var a = 0;
foo(a);
console.log(a);//expect a to be 10

【问题讨论】:

    标签: v8 embedded-v8


    【解决方案1】:

    在 JavaScript 中无法为原始类型设置外参数,而 V8 的 API 非常努力地不创建与 JavaScript 不一致的行为,因为那样会很奇怪。

    另一种解决方案是将字段嵌入对象中:

    var a = {value: 0}
    foo(a);
    console.log(a.value);  // This can be made to print 10.
    

    通过这种方法,您可以通过 V8 的 API 使用常规方式绑定函数,并且在 C++ 端只需修改传入对象的相应属性。

    【讨论】:

      猜你喜欢
      • 2010-09-16
      • 2018-01-25
      • 2018-05-11
      • 2018-08-15
      • 1970-01-01
      • 2014-01-12
      • 2012-08-04
      • 1970-01-01
      相关资源
      最近更新 更多