当前位置: 首页 > news >正文

git寻根——^和~的区别

呛醚脊何一、运行效果

??演示使用C#写的LiveCharts,点击按钮动态生成一些数据。

1. Android真机运行

2. 模拟器运行

二、实现原理

??原理比较简单,如下图所示,将C#写的PixUI应用及C++写的Skia引擎编译为WebAssembly,然后通过微信小程序的WXWebAssembly加载,并在canvas(WebGL)通过skia绘制出用户界面,监听微信小程序的事件传给C#处理后重新绘制界面。

三、开发步骤

1. 创建wasmconsole项目

创建项目前请确认已经通过dotnet workload install安装wasm-experimental及wasm-tools

dotnet new wasmconsole

2. 参考PixUI.Demo.Wasm.proj修改工程文件

3. 使用PixUI开发用户界面

4. 编译并分包

因微信小程序包大小限制问题,使用PixUI.WxmpPkgs工具自动拆分生成pkgs目录

5. 将如图所示的目录及文件复制进PixUI.Demo.Wxmp/miniprogram/dotnet目录内

6. 修改dotnet.native.js

因微信小程序的兼容问题,以及改动了dotnet的引导代码暂需要手动修改emcc编译生成的js。

替换所有import.meta.url为globalThis.bootUrl;

搜索receiveInstace,将function receiveInstance(instance,module){wasmExports=instance.exports;替换为function receiveInstance(instance,module){wasmExports=instance.instance.exports;

7. 用Wechat Devtools打开PixUI.Demo.Wxmp工程即可运行

四、优势与劣势

优势

代码复用:前后端可以统一开发语言,;

动态加载:可以远程加载C#写的PixUI组件;

劣势

包太大: 因打包了dotnet的mono运行时及skia引擎,目前不包含中文字体总的包大小差不多8.8MB,小程序首次加载根据网络情况会稍慢。

五、IOS真机问题

目前IOS真机上运行还有些问题,先在此记录。

1. WebAssembly不支持Exception Handling

WXWebAssembly加载时会报invalid wasm file错误, 暂编译不支持的版本绕过此问题。

2. JSC引擎的Function.length始终返回0

可以通过修改dotnet.runtime.js来绕过此问题, 搜索argument count mismatch for cwrap,将

if(o&&n&&o.length!==n.length&&(Pe(`argument count mismatch for cwrap ${e}`),o=void 0),"function"!=typeof o&&(o=Xe.cwrap(e,t,n,r))

替换为

if("function"!=typeof o&&(o=Xe.cwrap(e,t,n,r))

3. Jiterpreter造成微信闪退

暂通过修改dotnet.runtime.js来绕过此问题,搜索.tableSize,将

function(){if(ds)return;ds=!0;const e=ps(),t=e.tableSize,n=ot.emscriptenBuildOptions.runAOTCompilation?e.tableSize:1,

替换为

function(){return;if(ds)return;ds=!0;const e=ps(),t=e.tableSize,n=ot.emscriptenBuildOptions.runAOTCompilation?e.tableSize:1,

4. 报compiling function underran the stack错误,暂无解。请哪位熟悉WebAssembly的大神指点一下。

http://www.jsqmd.com/news/449967/

相关文章:

  • 电动汽车充电站优化配置方法研究与实现:以matlab为工具,集成cplex和gurobi求解器...
  • 2026年常州口碑好的文旅园区排名,了解纸飞机艺术岛研发能力 - mypinpai
  • 能源企业智能巡检如何用HTML5保障无人机视频文件夹分片上传的校验?
  • 我设计的网站的分布式架构
  • HTTP协议之状态码详解
  • 瀚海拾贝(一)HTTP协议/IIS 原理及ASP.NET运行机制浅析【图解】
  • 基于VS Fakes框架的TDD实战——接口模拟
  • MVVM(Knockout.js)的新尝试:多个Page,一个ViewModel
  • 谁懂!春节携程任我行礼品卡回收指南太香啦! - 京顺回收
  • 协议森林 涅槃 (TCP重新发送)
  • 在.net中读写XML方法的总结
  • 【原创】说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
  • 2026年北京离婚房产律师电话查询推荐:高效解决房产分割难题 - 品牌推荐
  • APUE笔记:Daemon Processes(十三) - Invinc
  • 选择HttpHandler还是HttpModule?
  • 截止到26年03月当前主流的几款简历工具汇总
  • 计算机毕业设计springboot儿童教育管理系统 基于SpringBoot的少儿培训机构综合运营服务平台 SpringBoot驱动的早期教育数字化管理与家校互动系统
  • 闲谈.Net类型之public的不public,fixed的不能fixed
  • 如何设计一门语言(三)——什么是坑(面向对象和异常处理)
  • 高升搬家电话查询:获取官方联系方式的途径 - 品牌推荐
  • 细说ASP.NET Forms身份认证
  • C# 温故而知新:Stream篇(五)
  • 盘点市场主流蘑菇石厂家:品质与设计谁更优?冰裂纹/碎拼石/脚踏石/石材/天然石/文化石/地铺石,蘑菇石品牌推荐排行榜 - 品牌推荐师
  • ,写给岁的自己
  • c#中的浮点型转整形的舍取-四舍五入和银行家舍入
  • 江苏2026年3D微针植发医院盘点,服务体验不错,美学植发/发际线调整/5C美学种植/微针植发,3D微针植发医院推荐哪些 - 品牌推荐师
  • async 与 await 在 Web 下的应用
  • vs2022 远程调试报错:找不到网络名、未知的生成错误“用户名或密码不正确
  • 技术文章是怎样炼成的?
  • How ASP.NET MVC Works?[持续更新中…]