gpt4 book ai didi

c++ - 编译为 wasm 的 C++ 和 Rust 程序能否以某种方式互操作?

转载 作者:行者123 更新时间:2023-12-05 00:09:55 24 4
gpt4 key购买 nike

假设我有一个用 Rust 编写的程序和另一个用 C++ 编写的程序。鉴于它们都被编译为 Wasm,我可以以某种方式从另一个程序中调用一个程序中的函数吗?

最佳答案

是的,如果他们共享相同的 ABI .

编译为汇编时,重要的是 ABI,或应用程序二进制接口(interface):

  • 类型在内存中是如何表示的?
  • 参数如何传递给函数?
  • ...

  • 当您听说 C 是编程语言的通用语时,这意味着任何与 C ABI1 对话的语言都可以与任何其他与 C ABI 对话的语言进行交流。

    因此,无论是针对 x64 上的 Windows 还是 WebAssembly,真正重要的是两个程序在相互交谈时共享相同的约定 (ABI)。

    在您的情况下,Rust 和 C++ 都可以与 C 通信,因此通过 C API 进行通信,它们可以在 x86、x64、各种 ARM 上进行通信,...当然还有 WASM。

    1 作为惯例,平台的所有者为该平台定义了 C ABI,所有 C 编译器在针对该平台时都实现了定义的 ABI。这意味着存在多个不兼容的 C ABI;但是,由于 ABI 仅在二进制级别交互时才重要,这仅在同一平台上执行时才会发生,因此实际上在任何给定情况下都有一个相关的 C ABI。

    关于c++ - 编译为 wasm 的 C++ 和 Rust 程序能否以某种方式互操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59412854/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com