根据报错提示,第一个参数需要传入一个绝对路径的.wasm文件,如pages/index/hello.wasm
如果需要将远程的wasm下载到本地再实例化应该如何实现呢,报错明确提示了,不能以wxfile://或http的文件路径开头,所有还有其他读取存储后文件绝对路径的且获取出来不为wxfile:前缀的绝对路径,api可以调用吗?
wasm资源文件超出了2m,希望可以走远程下载到本地再实例化
const info = {};
const cloudWasm = 'https://cdn.com/hello.wasm'
wx.downloadFile({
url:cloudWasm,
success:res=>{
const {tempFilePath} = res;
// 如何将tempFilePath转成绝对路径呢?
const fs = wx.getFileSystemManager();
const { env:{ USER_DATA_PATH } } = wx; // 当前用户设备的环境目录
const wasmfilename = tempFilePath.slice(tempFilePath.lastIndexOf('/') + 1);// 提取文件名和后缀
fs.saveFileSync(tempFilePath, wasmdir + wasmfilename);
const wasmdir = USER_DATA_PATH + "/wasm/"; // 在当前用户环境下新建一个目录
const obsoluteWasmFilePath = `${tempFilePath}/${wasmfilename}`;
WXWebAssembly.instantiate(obsoluteWasmFilePath,info).then(suc=>{
console.log('初始化成功')
},err=>{
console.log('初始化失败')
})
}
} )
原生 WebAssembly 不再提供,用下面的接口
WASM 参考文档:
1. WXWebAssembly.instantiate(path, imports) 方法。和官方用法区别是第一个参数只能为包内路径,同时支持传包含 wasm.br 后缀的 brotli 压缩文件路径
2. 支持 WXWebAssembly.Memory
3. 支持 WXWebAssembly.Table
4. 支持 WXWebAssembly.Global
5. export 支持函数、Memory、Table,暂不支持 Global
问题描述:
1、正常我们编译opencv+ncnn到wasm修改胶水代码后,在mac的微信开发者工具下,可以正常运行,不报错,但是到真机调试的时候报错Uncaught (in promise) FrameworkError
<CompileError: WebAssembly.instantiate(): Invalid opcode (enable with --experimental-wasm-threads) @+3819
2、8.0.1版本的opencv我们编译到真机是可以运行成功的,8.0.2之后由于换成包装函数WXWebAssembly的实例化WXWebAssembly.instantiate,就报了上面的多线程支持报错。应该你们真机环境是从8.0.2开始不支持多线程了
定位方法:
1、我们编译opencv到wasm时手动关掉了的多线程支持USE_PTHREADS=0,但是编译后的wasm中还是会触发多线程,具体哪些特性会触发多线程我们还没有定位到
2、我们编写一个简单的c++的hello world到wasm真机执行可以正常运行,不报错,单独编译c语言版的ncnn到wasm也不报错
提问:
1、想知道你们安卓的定制V8内核与开发者工具的内核有什么差别吗?
2、由于我们的算法库对opencv的依赖较高,目前还是主要从解决opencv的方向下手
3、如果最终还是编译不成功,才可能考虑重写C++的算法库去编译wasm
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的微信号。
请问我的微信开发者工具PC端可以接受数据,但是真机调试显示接收到数据,但是不显示
你好最后是怎么解决的?你wasm的文件是如何存放到本地的
你好最后怎么解决的呢?可以提供一下WXWebAssembly.instantiate加载远程opencv.wasm的示例代码吗
WXWebAssembly.instantiate方法,如何通过远程下载wasm文件且存储读取为非wxfile://开头的绝对路径,实例化成功????