首页 > Web开发 > 详细

WebAssembly 导出c结构体 js获取

时间:2020-07-12 00:12:22      阅读:102      评论:0      收藏:0      [点我收藏+]

c代码

#include <stdio.h>
#include <emscripten/emscripten.h>
typedef struct 
{
   int32_t number; 
   double d; 
   uint8_t* s;

}obj;

obj g = {1245,25.123456,(uint8_t*)"123456"};
uint8_t * EMSCRIPTEN_KEEPALIVE getStr(){
    return (uint8_t *)"hello world";
}
obj* EMSCRIPTEN_KEEPALIVE getObj(){
    return &g;
}

emscripten编译命令

emcc main.c -s EXTRA_EXPORTED_RUNTIME_METHODS=["UTF8ToString","getValue"] -s WASM=1  -s MODULARIZE=1  -s EXPORT_NAME="WasmModule" -s ENVIRONMENT=web -o index.js 

调用代码

WasmModule().then(mod => {
            //获取c字符串
            let strPtr = mod._getStr();
            //c字符串转换为js字符串
            console.log("_getStr 返回值",mod.UTF8ToString(strPtr));

            //获取结构体
            let obj = mod._getObj();
            // int32_t number; 
            console.log("int32_t number",mod.HEAP32[obj >> 2])
            //double d; 
            console.log("double d",mod.HEAPF64[(obj + 12) >> 3]);
            //uint8_t* s;
            console.log("uint8_t* s",mod.UTF8ToString(obj - 24));

        })

输出

技术分享图片

 

WebAssembly 导出c结构体 js获取

原文:https://www.cnblogs.com/y-y-y-y/p/13285917.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!