当前位置: 首页 > news >正文

Qt6.8.2中JavaScript调用WebAssembly的js文件<1>

前段时间已经学习了如何在QtAssembly中编译FFmpeg资源了,接下来需要使用Html来调用QtCreator中WebAssembly套件写的功能,逐步实现javascrpt与c++复杂功能的视线。

接下来我先为大家介绍一个非常简单的加法调用吧!

功能讲解

开发环境:win11电脑,QtCreator6.8.2匹配WebAssembly3.1.56

1:新建运行文件夹

首先需要新建一个名为"run"的文件夹

2:创建一个cpp文件

#include <emscripten.h>
#include <iostream>
 
extern "C" {
    int add(int a, int b) {
        return a + b;
    }
}

假设CPP文件名是:example.cpp

3:创建inde.html文件

该文件中用于实现javascript代码,来调用C++中的加法功能

<!DOCTYPE html>
<html>
<head>
    <title>WebAssembly Example</title>
    <script src="example.js"></script>
    <script>
        Module().then(function(module) {
            var add = module.cwrap('add', 'number', ['number', 'number']);
            console.log("5 + 3 =", add(5, 3)); // 应该输出 8
        });
    </script>
</head>
<body>
    <h1>WebAssembly Test</h1>
</body>
</html>

4:在该文件夹中打开CMD编译cpp文件

编译cpp的指令是:

emcc example.cpp -o example.js -s WASM=1 -s EXPORTED_FUNCTIONS="['_add']" -s EXPORTED_RUNTIME_METHODS="['ccall', 'cwrap']" -s MODULARIZE=1 -s ENVIRONMENT='web'

其中,里面对应的参数解析是:

这里是一些关键选项的解释

        -o example.js:指定输出文件名为 example.js

        -s WASM=1:生成 WebAssembly 输出

        -s EXPORTED_FUNCTIONS:指定哪些函数需要被导出到 JavaScript

        -s EXPORTED_RUNTIME_METHODS:导出运行时方法,例如 ccall 和 cwrap

        -s MODULARIZE=1:生成一个模块化的 JavaScript 文件,这样你可以通过 ES6 import 语法来导入它。

        -s ENVIRONMENT='web':指定运行环境为 Web。

出现下面的页面时,表示编译成功了

5:启动python服务

python -m http.server

6:打开浏览器查看结果

直接可以在浏览器中输入:http://localhost:8000/index.html,可以从控制台中查看输出结果了。

好了,功能讲解到这里就结束了,只是一个简单的加法操作,后续的复杂操作,我会继续学习,继续分享的!

我是糯诺诺米团,一名C++程序媛~

相关文章:

  • linux-Openmanus本地部署-AI-Agent初探
  • 【农业大数据处理与应用】实验二 随机森林算法与LSTM循环神经网络
  • Linux文件系统管理
  • Spark;scp命令,rsync命令,ssh命令
  • 技术解析与实战指南:MySQL性能优化与高效数据库迁移工具推荐
  • 深度剖析《数理化学习》期刊:数理化教育领域的学术明珠
  • JAVA使用jar包外前端
  • 统一 Elastic 向量数据库与 LLM 功能,实现智能查询
  • 文档在线协同工具ONLYOFFICE教程:如何使用宏对 PDF 表单中的特定字段执行计算
  • 设计模式之美
  • LeetCode-移动零
  • 如何配置Socks5代理
  • 56.HarmonyOS NEXT 登录模块开发教程(十):总结与展望
  • 游戏引擎学习第156天
  • [leetcode] 面试经典 150 题——篇1:数组/字符串
  • 【redis】redis的单线程模型为什么效率高?
  • 为什么使用 XML Schema?
  • Linux websocket服务器、配网方法、QT客户端程序
  • deepseek+kimi做ppt教程记录
  • 我的创作纪念日 打造高效 Python 日记本应用:从基础搭建到功能优化全解析
  • 淘宝客网站如何让做/网站软件开发
  • 免费照片的网站模板免费下载/怎么做网站关键词优化
  • 深圳模板建站企业/悟空建站seo服务
  • 如何做网站关键词/百度推广需要多少钱
  • 美艺网站建设/旺道seo系统
  • 内江市网站建设/长沙哪里有网站推广优化