# wasmbox **Repository Path**: lightsever/wasmbox ## Basic Information - **Project Name**: wasmbox - **Description**: 这是一个用wasm来开发网页 pc、移动 游戏的框架 是的,你没听错,这里要解决的关键问题是提供一致性的输入输出方法提供给网页与本地。 利用wasm来实现真正意义上的跨平台 - **Primary Language**: C - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-09-30 - **Last Updated**: 2025-09-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 重头来过 emcc 安装 1.首先安装python 3.8 以上 https://www.python.org/downloads/release/python-3137/ 2.然后 [参考文档](https://emscripten.org/docs/getting_started/downloads.html) 安装emscripten ## 如何调试 用 buildwasm_dev.bat 构建Debug版,带调试符号 用 buildwasm.bat 构建Release版,容量小 ## js 如何调用 c# 函数 c# static函数用 [UnmanagedCallersOnly(EntryPoint = "XXX")] 标记 即可 在js 中 就会体现在wasm.exports中 比如例子中 Add 函数 就是 c# 提供的 ```typescript var wasm =await loadWasm("./libWasm.wasm"); var funcs =wasm.exports as any; funcs.__wasm_call_ctors(); var v = funcs.Add(3,4); ``` ## c# 如何调用 js函数 c# 中所需的接口,可以以pinvoke的方式定义 ```csharp [DllImport("__Internal", EntryPoint ="hello")] static extern void Hello(double a); ``` 同时需在项目文件中配置 ```xml ``` 则这个函数就变成一个import 函数 需要js端提供 ```js var info = getWasmImports(); info["env"]["hello"]=()=>{ console.log("like this?"); }; ``` ## 传值问题 ### 1.js 的 number 是double 支持和 c 端 int32 以下的整数通讯 支持 float double ### 2.字符串 无法直接传递,通过地址间接传递 基本问题已经解决,下面就可以愉快的用c# 开发wasm了。