• WebAssembly MDN简单使用


    MDN 就是通过编译器编译完成c后生成的胶水代码 引入js 就能直接调用定义在c或者c++中的函数了

    c代码如下:

      

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    //emscripten 的头文件
    #include <emscripten/emscripten.h>
     
    // 一旦WASM模块被加载,main()中的代码就会执行
    int main() {
        printf("WebAssembly module Hello world!!
    ");
    }
     
    // 返回1-10之间的一随机数
    //EMSCRIPTEN_KEEPALIVE 宏定义防止删除除main之外的函数
    int EMSCRIPTEN_KEEPALIVE abc() {
        srand ( time(NULL) );
        return rand() % 10 + 1;
    }

    html与js代码:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <h1>WebAssembly module Hello world!!</h1>
        <p class="aa"></p>
        <p class="a"></p>
        <button class="btn">点击出现随机数</button>
        <script src="index.js"></script>
        <script>
        //Module为全局对象可以直接Module._abc();调用c函数也可以_abc()直接函数名调用
        //注意页面初始化时候调用需要先调用 Module.onRuntimeInitialized
     
         document.querySelector(".btn").onclick = function(){
            let a = Module._abc();
            document.querySelector(".aa").innerText = a;
            document.querySelector(".a").innerText = _abc();
         }
        </script>
    </body>
    </html>

    编译器使用emscripten编译指令为: emcc hello.c -s WASM=1 -O3 -o index.js

    具体编译命令的含义请看emscripten官方文档!!

  • 相关阅读:
    Flink window机制
    用上帝视角来看待组件的设计模式
    npm和package.json那些不为常人所知的小秘密
    四步走查智能硬件异常Case
    PorterDuffXfermode 图像混合技术在漫画APP中的应用
    发布流程进化史
    新手入门Sqlalchemy
    OpenResty 最佳实践 (2)
    更新数据库触发器
    删除约束名字段名
  • 原文地址:https://www.cnblogs.com/y-y-y-y/p/10175193.html
Copyright © 2020-2023  润新知