将数组传递给V8函数

问题描述 投票:0回答:1

我已经开始考虑将V8用于我的C ++项目,并且我很难理解如何将数据从C ++应用程序传递到V8引擎并返回。

[下面是一些伪代码,我希望能够在JS中定义一个称为doPocess的全局函数,该函数进行一些处理,只有C ++应用才能读取:

function doProcess(input, output){
    for (var i in input){
        var byte = input[i]
        output.push(byte)
    }
}

为了传递数据数组并捕获输出结果,C ++代码会是什么样?

c++ buffer v8
1个回答
0
投票

您不能直接向JavaScript公开C ++数组(例如int[])。相反,您具有(至少)以下选项:

(1)您可以分配一个JavaScript数组(请参见Array中的v8.h类),复制数据(将每个元素适当地转换为JS值),然后将该数组作为参数传递给JavaScript功能。由于复制,这将使数组创建有些昂贵。

(2)可以定义一个带有索引拦截器和“嵌入式字段”的对象,将C ++数组存储在embedder字段中,并根据需要使用索引拦截器来检索元素。由于拦截器,这将使数组元素的访问成本较高。

((3)对于纯数字数据,可以使用TypedArray,它使您可以选择在C ++和JavaScript之间共享后备存储。

您可以通过从全局对象读取(按名称)JavaScript函数本身。对于输出,将应用相同的选项(为(1)反向复印)。

请务必签出documentation和官方samples

© www.soinside.com 2019 - 2024. All rights reserved.