有人知道当前是否可以从编译为wasm的C#中调用C ++(或更精确地说,是Uno Platform应用程序)?
我对WebAssembly相当陌生,但是我设法将C ++函数编译为wasm并从JavaScript调用它。 我还从Uno获得了一个快速入门项目(该项目可让您将用C#/ XAML编写的UWP应用编译为wasm并在浏览器中运行)。
我每天都用C#和C ++编写代码,但是我不知道是“两种语言之间的互操作” + WebAssembly组合。 我假设我需要将两种语言的代码编译为2个单独的wasm文件,然后以某种方式将它们链接在一起或在运行时加载C ++。 我今天想做的事甚至有可能吗?
编辑:要明确:这个想法是所有代码最终都将编译为wasm。
答案 0 :(得分:5)
自上个月以来,mono-wasm运行时支持P / Invoke,使用两种模式:
目前正在Uno.Wasm.Bootstrapper in this PR中处理后者。
它具有与其他.NET运行时完全相同的行为,这意味着无法直接访问C ++,并且必须公开一个C API才能使用它。
使用C ++有一些注意事项,其中需要将运行时强制包含在mono运行时的二进制文件中,从而使其变得更大。这可能很快就会改变,因为emscripten正在迁移到完整的LLVM后端。
某些文档是关于Uno.Wasm.Bootstrapper的available here。