news 2026/5/3 22:46:28

微信小程序,微信小游戏调用WebAssembly

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
微信小程序,微信小游戏调用WebAssembly

微信小程序和小游戏本质上是浏览器,小程序和小游戏的区别是游戏里面只有主进程,所以两者调用wasm会有同步异步之分。

微信官方文档资料太少,没有具体如何调用,但是浏览器内核都是一样的,微信只不过把WebAssembly封装成了WXWebAssembly,支持了压缩,思路都是一样的。

开维游戏引擎,内核c++编写,v8引擎封装游戏函数,Assembly实现htm跨平台高效运行。编译wasm需要支持导出微信小游戏,期间遇到的问题,解决时网上资料很少,我们补充一下,也建议微信小游戏官方文档能补充详细的实例和文档说明。

1. wasm编译

wasm的编译,是把c++,或rust等语言编译成汇编语言,编译优化选项慎用,特别是优化编译,因为编译后有javascript脚本语言作为胶水代码,即解析调用wasm的这部分代码,如果优化太狠,生成的js也会跟着优化,甚至函数名称都会改变。微信中的浏览器会因为函数名对不上导致加载失败。原因是胶水代码调用wasm没问题,他们是可以对上的,emcc编译的时候已经做了对应,但是微信中的浏览器不知道,他是按照默认的函数名称调用的,所以就会出问题。

引擎移植遇到最多的问题之一就是链接函数找不到,无论是杀毒引擎还是游戏引擎等,都会遇到符号表找不到,问题本质上是coff文件或者其他中间文件,要根据符号表链接,编译选项不同,符号表也不一样,即便编译选项一样,关键字不同,也会导致符号名称不同,例如会加@后面的数值也不同,所以理解这个原因后查问题就很容找到,首先要排除函数名称对应不上的问题,可以用ida反编译wasm看一下就很清楚了。

2. 微信小游戏内存

微信小游戏内存分页有限制,需要做限定。另外他对浏览器做了修改,对堆栈的管理等做了限制。有时候发现正常的浏览器可以,微信小游戏不行,是因为递归或者嵌套调用过多导致崩溃,因为微信为了保证用户在一个小沙盒内,对各种调用做了限定,包括包大小的限定等。

3. 函数调用

微信小游戏的函数不完全支持时,需要自己补函数,原理类似coff文件中,链接到自己的一个函数,把函数地址回填到相应的内存地址中,hook,加壳,jmp替换函数,内存补丁都是这个原理。

4. 微信小游戏中wasm适用范围

一般情况浏览器支持的功能,微信小游戏都会支持,例如对类的支持,对文件系统的支持。因为微信小游戏浏览器也不会改太多,例如对胶水代码的加载调用,除了封装WXWebAssembly外,基本没太多变化。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 22:46:27

洛谷 P1025 [NOIP 2001 提高组]:数的划分 ← DFS + 剪枝

【题目来源】 https://www.luogu.com.cn/problem/P1025 【题目描述】 将整数 n 分成 k 份,且每份不能为空,任意两个方案不相同(不考虑顺序)。 例如:n7,k3,下面三种分法被认为是相同的。 1,1,5&…

作者头像 李华
网站建设 2026/5/3 22:44:41

构建高质量土耳其语NLI数据集TrMNLI的技术实践

1. 项目背景与意义自然语言推理(Natural Language Inference, NLI)作为自然语言处理领域的基础任务,旨在判断两个句子之间的逻辑关系(蕴含、矛盾或中立)。2018年诞生的多语言NLI数据集XNLI将研究视野扩展到英语之外的1…

作者头像 李华
网站建设 2026/5/3 22:41:25

大模型推理优化:LT-Tuning框架与思维链技术解析

1. 项目概述:当大模型学会"三思而后行"在自然语言处理领域,我们常常遇到这样的困境:大语言模型在单轮推理中表现优异,但在需要多步逻辑推导的复杂任务中却频频"翻车"。这就像让一个记忆力超群的学生参加数学竞…

作者头像 李华
网站建设 2026/5/3 22:39:28

2026年紫光国微数字IC设计笔试题带答案

考试时间:90分钟  总分:100分 一、单选题(每题3分,共24分) 关于异步复位,以下做法正确的是: A. 直接使用异步复位,无需任何处理 B. 异步复位释放时需同步到时钟沿 C. 异步复位只能用于仿真,不可综合 D. 异步复位不能与同步复位混用 答案:B (异步复位同步释放) …

作者头像 李华
网站建设 2026/5/3 22:39:27

使用Hermes Agent时如何将其后端切换至Taotoken平台

使用 Hermes Agent 时如何将其后端切换至 Taotoken 平台 1. 准备工作 在开始配置之前,请确保您已经拥有 Taotoken 平台的 API Key 和想要使用的模型 ID。您可以在 Taotoken 控制台的「API 密钥」页面创建新的密钥,并在「模型广场」查看可用的模型列表及…

作者头像 李华