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

上一篇文章介绍了javaScript如何调用简单的加法运算,该js的编译是采用cmd指令进行的,今天我为大家介绍如何使用QtCreator的WebAssembly套件编译成js、wasm,并且让javascript进行调用。

那么还是以简单的加法运行为例。

功能介绍

开发环境:win11 + Qt 6.8.2

1:创建一个简单项目

打开QtCreator开发工具,选择一个模块,按照下面的步骤进行操作

 

 2:添加导出函数

因为只是导出一个简单的加法函数,直接在"main.cpp"中添加就可以了。

程序创建后未曾修改过的的"main.cpp"

 添加"add"导出函数

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

代码解析:将 add 函数以 C 语言的链接方式导出到 WebAssembly 模块中,并确保其不被编译器删除。

使用场景:当需要通过 JavaScript 调用 C++ 函数时(例如在 Qt Creator 编译的 WebAssembly 项目中),此代码为函数提供了跨语言调用的桥梁。

此时没有涉及到页面操作,所以去除了main函数里面的内容,对mian函数的修改,如下:

int main()
{
    return 0;
} // 必须保留main函数

踩坑:在这里必须要保留main函数,否则生成的js胶水代码被html调用时在浏览器中会有callMain未定义的错误!!!

完整的main.cpp的代码,如下:

#include <emscripten.h>

extern "C" EMSCRIPTEN_KEEPALIVE int add(int a, int b) {
    return a + b;
}

int main()
{
    return 0;
} // 必须保留main函数
<
### 配置 Qt 6.8.2 在 CLion 中连接 MySQL 的方法 要在 CLion 中配置 Qt 6.8.2 并使其能够连接到 MySQL 数据库,需要完成以下几个方面的设置: #### 1. 安装必要的依赖项 在 Ubuntu 上安装 MySQL 和其开发工具包。可以通过以下命令来实现: ```bash sudo apt update sudo apt install mysql-server libmysqlclient-dev ``` 这一步确保系统上已经安装了 MySQL 及其 C/C++ 开发文件和库。 #### 2. 编译并链接 Qt SQL 插件支持 MySQL Qt 默认并不自带对 MySQL 的支持插件,因此需要手动编译 `QMYSQL` 插件。以下是具体操作步骤: - **进入 Qt 源码目录中的 sql 插件路径** 假设 Qt 已经按照引用说明被安装到了 `/opt/Qt6/6.8.2`[^1],那么可以找到对应的源码位置: ```bash cd /opt/Qt6/6.8.2/Src/qtbase/src/plugins/sqldrivers/mysql/ ``` - **创建构建环境** 使用 qmake 创建 Makefile 文件,并指定目标平台以及 MySQL 库的位置: ```bash /opt/Qt6/6.8.2/bin/qmake "INCLUDEPATH+=/usr/include/mysql" "LIBS+=-lmysqlclient_r" make sudo mv ./libqsqmymysql.so /opt/Qt6/6.8.2/lib/qt-plugins/sqldrivers/ ``` 此处假设 MySQL 头文件位于标准路径 `/usr/include/mysql` 下;如果不同,则需调整上述命令中的 `-I` 参数。 #### 3. 设置 CLion 构建项目以使用 Qt 和 MySQL 支持 为了使 CLion 能够识别 Qt 和 MySQL 功能模块,在项目的 CMakeLists.txt 文件中加入如下内容: ```cmake set(CMAKE_PREFIX_PATH "/opt/Qt6/6.8.2") find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Sql) add_executable(MyApp main.cpp) target_link_libraries(MyApp PRIVATE Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Sql) ``` 此部分通过 `CMAKE_PREFIX_PATH` 来定位 Qt 的安装路径,并通过 `find_package()` 函数加载所需的组件。 #### 4. 示例代码展示数据库连接逻辑 下面是一个简单的示例程序用于测试与 MySQL 数据库的连通性: ```cpp #include <QCoreApplication> #include <QtSql/QSqlDatabase> #include <QtSql/QSqlError> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName("localhost"); // 替换为实际主机名 db.setDatabaseName("testdb"); // 替换为目标数据库名称 db.setUserName("root"); // 用户名 db.setPassword("password"); // 密码 if (!db.open()) { qDebug() << "Failed to connect:" << db.lastError().text(); return -1; } else { qDebug() << "Successfully connected!"; } return a.exec(); } ``` 该脚本尝试打开名为 `testdb` 的本地数据库实例。如果失败则打印错误消息;反之输出成功提示信息。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

糯诺诺米团

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值