使用节点 FFI 从 .so 导入类型
Using node FFI to import types from .so
NodeFFI 可用于提取 C 文件(特别是 .so)并从中读取代码。对此我有两个问题。如果我在 rust 中定义一个类型,它会显示为 javascript 中的一个类型吗?此外,是否可以在不设置参数值的情况下使用函数(没有 'function': [ 'int', [ 'int', 'int' ] ]
?如果不是,我将如何从 .so 文件中“声明”一个类型?
If I define a type in rust, will that show up as a type in javascript?
没有。其一,JavaScript 中的类型系统与 Rust 中的非常不同。另一方面,.so
文件根本无法导出任何类型。调用者应该知道类型的内存布局。在 C 语言中,它将在与 .so
文件一起提供的头文件 (.h
) 中声明。
Furthermore, is there anyway to use functions without setting parameter values (without the 'function': [ 'int', [ 'int', 'int' ] ]? If not how would I "declare" a type from the .so file?
如上所述:你没有。
但是您可以使用 node-bindgen
crate 生成 Node.js 包装器代码以相对容易地从 Node.js 调用 Rust 代码。这不能满足您的要求,但它可能可以满足您的需求 ;)
NodeFFI 可用于提取 C 文件(特别是 .so)并从中读取代码。对此我有两个问题。如果我在 rust 中定义一个类型,它会显示为 javascript 中的一个类型吗?此外,是否可以在不设置参数值的情况下使用函数(没有 'function': [ 'int', [ 'int', 'int' ] ]
?如果不是,我将如何从 .so 文件中“声明”一个类型?
If I define a type in rust, will that show up as a type in javascript?
没有。其一,JavaScript 中的类型系统与 Rust 中的非常不同。另一方面,.so
文件根本无法导出任何类型。调用者应该知道类型的内存布局。在 C 语言中,它将在与 .so
文件一起提供的头文件 (.h
) 中声明。
Furthermore, is there anyway to use functions without setting parameter values (without the 'function': [ 'int', [ 'int', 'int' ] ]? If not how would I "declare" a type from the .so file?
如上所述:你没有。
但是您可以使用 node-bindgen
crate 生成 Node.js 包装器代码以相对容易地从 Node.js 调用 Rust 代码。这不能满足您的要求,但它可能可以满足您的需求 ;)