【问题标题】:Can Blazor WebAssembly call another WASM module directly?Blazor WebAssembly 可以直接调用另一个 WASM 模块吗?
【发布时间】:2020-04-28 21:20:35
【问题描述】:

Blazor WebAssembly 代码可以直接从另一个 WASM 模块调用函数还是需要 JavaScript 桥接器?

OpenCV 是为 WASM 构建的,如 OpenCV.js。有没有办法从 OpenCV WASM 实现中导出函数定义并直接从 Blazor 代码中使用它们?是使用 JS 互操作并拥有调用 OpenCV 函数的 JS 函数的最佳替代方案吗?

【问题讨论】:

  • WebAssembly 是单个文件还是两个不同的文件?
  • WebAssembly 的内容分为几部分:首先是 Blazor 部分,然后是 OpenCV 部分,其中包含 OpenCV.js 文件。
  • 理论上你可以使用 wasmtime .NET 从 .NET 运行 wasm 模块。不确定它是否适用于 blazor 应用程序,或者它是否可以将 wasm 模块加载为 url 资源。
  • 假设我有普通的 blazor 应用程序,另外我有自己的 file.wasm。如何从 C# 调用它?

标签: c# opencv blazor webassembly


【解决方案1】:

使用 .NET 6 应该更容易实现这一点,因为 Blazor 现在支持本机依赖项。您可以使用 emscripten 将 OpenCV C++ 或 OpenCV.js 编译为 wasm,并将本机文件添加到您的 csproj,如下所示。

<NativeFileReference Include="path-to-output-file" />

然后您可以继续 P/Invoke 到本机代码中。在这个YouTube video 中,Steve Sanderson 演示了一个非常相似的场景。您还可以查看 docs 关于 Blazor 中的本机依赖项了解更多信息。

【讨论】:

    猜你喜欢
    • 2021-07-01
    • 1970-01-01
    • 2017-09-03
    • 2019-03-11
    • 2020-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    相关资源
    最近更新 更多