盐山县网站建设价格,昆明网站建设培训,宁波网站制作计划,wordpress如何修改用户名密码上一篇文章讲了C/C如何转WebAssembly#xff0c;并测试了在Web端调用。本篇内容和上篇一样#xff0c;介绍C/C包转的.wasm包如何在小程序中调用。
说明
本篇是在上一篇步骤1-4的基础上#xff0c;再做修改#xff0c;供微信小程序端调用的方法和步骤。
本篇操作手册可以…上一篇文章讲了C/C如何转WebAssembly并测试了在Web端调用。本篇内容和上篇一样介绍C/C包转的.wasm包如何在小程序中调用。
说明
本篇是在上一篇步骤1-4的基础上再做修改供微信小程序端调用的方法和步骤。
本篇操作手册可以参考如下文档
https://www.cijiyun.com/newsview?id64139https://developer.mozilla.org/en-US/docs/WebAssembly/C_to_wasm
前情提要
通过上篇文章我们知道将编写好的C/C代码打包成.wasm会同时生成.html、.js文件具体方法参考 C/C转WebAssembly流程及Web端调用测试 这一篇中的步骤 1-4。文件如下 对于微信小程序直接编译打包后的包无法直接调用所以还需要进行一些代码修改。
注意此处修改web_assembly_test.js文件是在上一篇修改之后的基础上再做修改所以需要先对上一篇文章有所了解。
具体步骤如下
第一步新建文件及目录
在小程序文件夹中新建文件目录包括
pages/worker目录用于进行打包文件的调用workers目录与pages平齐创建workers目录用于存放.wasm文件
目录结构如下 说明
workers目录中只需要存放web_assembly_test.wasm即可其它文件可以不需要。这样做的目的是为了把.wasm打包进去并且还可以分包打包在调用.wasm包的page中pages/worker目录只需要.js即可这个文件包含了一些调用.wasm文件的方法。参考文档https://www.cijiyun.com/newsview?id64139
第二步修改web_assembly_test.js文件
在web_assembly_test.js文件的最底部添加
module.exports {Module: Module
}如下 注释scriptDirectory self.location.href代码
// scriptDirectory self.location.href修改instantiateArrayBuffer函数
将该方法修改为如下
function instantiateArrayBuffer(binaryFile, imports, receiver) {return WXWebAssembly.instantiate(/workers/web_assembly_test.wasm, imports).then(function(instance) {return instance;}).then(receiver, function(reason) {err(failed to asynchronously prepare wasm: reason);// Warn on some common problems.if (isFileURI(wasmBinaryFile)) {err(warning: Loading from a file URI ( wasmBinaryFile ) is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing);}abort(reason);})
}说明
上面方法中的/workers/web_assembly_test.wasm是指.wasm文件的存放路径。最好不要存放在同一个目录新建一个和pages平级的目录进行存放
修改如下 将所有.js文件中的WebAssembly修改为WXWebAssembly
至此.js文件的修改全部完成了下面进行方法调用。
第三步调用方法
参考前一篇文章中的定义我们定义了两个方法myFunction和myMaxFunc。方法的调用位置在pages/worker/index.ts中。
首先引入文件
const web_assembly_test require(./web_assembly_test)其次使用方法
/*** 生命周期函数--监听页面初次渲染完成*/onReady() {const moudule web_assembly_test.Modulemoudule.ccall(myMaxFunc, null, null, null)moudule.ccall(myFunction, null, null, null)},说明具体调用原理参考上一篇。
最后进行结果验证
结合上文中的说明这两个方法里并没有具体的方法执行只写了输出。在控制台中查看 可以看到每个方法都在控制台中打印了该方法指定的输出结果。
在小程序中调用方法的功能全部实现。