我正在尝试使用Rust,WebAssembly和C互操作性,最终在浏览器或Node.js中使用Rust(带有静态C依赖)库.我正在使用wasm-bindgen
JavaScript胶水代码.
#![feature(libc, use_extern_macros)]
extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;
use std::os::raw::c_char;
use std::ffi::CStr;
extern "C" {
fn hello() -> *const c_char; // returns "hello from C"
}
#[wasm_bindgen]
pub fn greet() -> String {
let c_msg = unsafe { CStr::from_ptr(hello()) };
format!("{} and Rust!", c_msg.to_str().unwrap())
}
Run Code Online (Sandbox Code Playgroud)
我的第一个天真的方法是使用一个build.rs
脚本,使用gcc crate从C代码生成一个静态库.在介绍WASM位之前,我可以编译Rust程序并hello from C
在控制台中查看输出,现在我从编译器中得到错误说
rust-lld: error: unknown file type: hello.o
Run Code Online (Sandbox Code Playgroud)
build.rs
extern crate gcc;
fn main() {
gcc::Build::new()
.file("src/hello.c")
.compile("libhello.a");
}
Run Code Online (Sandbox Code Playgroud)
这是有道理的,现在我考虑一下,因为该hello.o
文件是为我的笔记本电脑架构而不是WebAssembly编译的.
理想情况下,我希望这可以开箱即用,在我的build.rs中添加一些魔法,例如将C库编译为Rust可以使用的静态WebAssembly库.
我认为这可行,但是想避免,因为它听起来更有问题,是使用Emscripten为C代码创建WASM库,然后单独编译Rust库并将它们粘合在一起.
由于支持WebAssembly进入所有新的主流浏览器,我如何检查访问我网站的当前浏览器是否支持它?
是否可以将Web API与WebAssembly 一起使用?如果是这样,怎么样?我对Navigator界面更感兴趣.
我将 vs 2019 16.3.10 更新为 16.4,将 .net core 3.0 更新为 .net core 3.1,但缺少 blazor Web 程序集应用程序模板。
我最近开始在我的一些项目中使用 WebAssembly。我这样做是因为我听说 Wasm 比 javaScript 快。
当我真正开始我的第一个 Wasm 项目时,我意识到我不知道如何在 C++ 中操作 DOM。
有没有办法使用 Wasm 来做到这一点?
我需要将 C# 项目编译为 WebAssembly,并能够从 JavaScript 调用一些方法。
我想在需要添加一些新功能的旧 ASP.NET MVC 4 应用程序中使用它,并且我更喜欢使用 C# 而不是 JavaScript/TypeScript。
理想情况下,我想使用 .Net 6 编译为 WebAssembly,但我可以使用任何其他替代方案。
我在 Windows 10 版本 21H1(操作系统内部版本 19043.1415)上运行 .Net 6
我已经安装了:
但每次我搜索有关如何使用 .NET WebAssembly 构建工具的教程、示例等时,结果都是有关 Blazor 的。
我已阅读本教程,但找不到 mono-wasm 编译器(正如我上面所说,我希望尽可能使用 .Net 6 进行编译。)
谁能帮我解决这个问题吗?
谢谢。
随着Web新时代的到来,WebAssembly将由Google,Microsoft,Apple和Mozilla合作设计:
WebAssembly高级目标
- 定义可移植,大小和加载时间有效的二进制格式作为编译目标,通过利用各种平台(包括移动和物联网)上的常用硬件功能,可以编译为以本机速度执行
我想问那些已经掌握了这些知识的人:
可能有任何编程语言一旦编译成WebAssembly吗?让它成为C#,Java,Python,JavaScript,Ruby.如果是这种情况 - 网络开发人员是否可以选择任何语言来完成他现在使用JavaScript实现的目标?
我正在学习 Blazor 技术。我在 VS 2019 中启动了一个默认的增量项目,并且我已经使用 confirm() 和 alert 修改了 Decrement 的代码,但它不起作用。
@page "/counter"
<h1>Counter</h1>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Increment</button>
<button class="btn btn-primary btn-danger" onclick="if (confirm('Are you sure to Decrement')) { @DecrementCount() }">Decrement</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
private void DecrementCount()
{
currentCount--;
// alert('Operation Successfully executed')
}
}
Run Code Online (Sandbox Code Playgroud)
在我的代码片段中,confirm() 函数运行良好,但我想调用 Decrement 函数不起作用构建失败。我想在我的函数中添加一条成功消息。请提供任何选项,而不是使用 confirm(),alert() 函数。
webassembly ×10
c# ×3
javascript ×3
blazor ×2
.net-6.0 ×1
.net-core ×1
asp.net-core ×1
browser ×1
c ×1
dart ×1
dart2js ×1
emscripten ×1
flutter ×1
flutter-web ×1
python ×1
rust ×1