使用 JS-ctypes 将结构化数据传递给本机代码

Passing structured data to native code using JS-ctypes

本文关键字:本机代码 数据 JS-ctypes 结构化 使用      更新时间:2023-09-26

我正在开发一个Firefox扩展,我需要使用目前以Javascript对象形式呈现的结构化数据执行一些高速计算。为了实现这一点,我计划编写使用 js-ctypes 调用的 C 库。有没有办法使用 JS-ctypes 将 Javascript 对象传递给本机库?数据示例:

{vendors: 
{Oracle: {products: 
{Exadata: {spec1: 111, spec2: 222}, Exalogic:
{spec1: 111, spec2: 222}}}, IBM: {products: {WebSphere: {spec1: 111, spec2:222}}}
}}

提前谢谢。

只能传入在 C 中有效的类型。由于 C 没有字典类型或类似概念,因此您无法将它们传递给 C 代码。所以你基本上有两个选择:

  1. 使用 JSON.stringify() 将此对象转换为字符串。然后,您必须找到一些可以解析JSON并允许您以某种方式使用它的C库。
  2. 你可以将你的JavaScript数据转换为C可以直接理解的类型。例如,可以传入一个Vendor结构数组,每个Vendor结构都包含一个指向Product结构数组的指针。当然,你的 C 代码需要知道数组的大小 - 这必须是前一个数组的函数参数和后者的Vendor结构字段。