Nur*_*yev 5 c++ rust wasm-bindgen
假设我有一个用 Rust 编写的程序和另一个用 C++ 编写的程序。鉴于它们都被编译为 Wasm,我可以以某种方式从另一个程序中调用一个函数吗?
是的,如果他们共享相同的 ABI。
编译为汇编时,重要的是 ABI,或应用程序二进制接口:
当您听到C 是编程语言的通用语时,这意味着任何使用 C ABI 1 的语言语言都可以与使用任何其他语言进行通信。
因此,无论是针对 x64 上的 Windows 还是 WebAssembly,真正重要的是这两个程序在相互交谈时共享相同的约定 (ABI)。
就您而言,Rust 和 C++ 都可以使用 C,因此通过 C API 进行通信,它们可以在 x86、x64、各种 ARM 上进行通信,当然还有 WASM。
1 作为惯例,平台的所有者为平台定义 C ABI,所有 C 编译器在面向该平台时都实现定义的 ABI。这意味着存在多个不兼容的 C ABI;然而,由于 ABI 仅在二进制级别交互时才重要,这仅在同一平台上执行时才会发生,因此实际上在任何给定情况下都有一个相关的 C ABI。
| 归档时间: |
|
| 查看次数: |
403 次 |
| 最近记录: |