论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
软件与程序人生
›
后端开发
›
Java
›
C/C++与JavaScript的WebAssembly编程(一)
C/C++与JavaScript的WebAssembly编程(一)
农妇山泉一亩田
论坛元老
|
2025-4-2 19:42:59
|
显示全部楼层
|
阅读模式
楼主
主题
1611
|
帖子
1611
|
积分
4833
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
1. JavaScript与C/C++混合编程的技术
JavaScript与C++混合编程可以实现两种语言的优势联合,C++的程序性能很高且支持强大的系统调用本事,JavaScript则生态丰富且
开发
效率高。
JavaScript与C++混合编程常见的技术手段主要有以下几种:
Node.js的C++扩展
: 常用于Node.js实现的后端服务代码。在WebAssembly出现之前,Node.js的服务器代码通常以这种方式调用C/C++的模块。
JsAPI和Native API
: 常应用于包含WebView的客户端。将Native端的代码封装成Web接口(JsAPI)供前端调用,将Web端的代码封装成Native接供词Native调用。像Electron、CEF技术栈的客户端均采用了此种方式。
WebAssembly
: 主要用于欣赏器上运行的前端页面,Node.js从8.0开始也支持WebAssembly,因此也可用于服务端
开发
。
本章所讲的内容是基于WebAssembly的混合编程技术。
2. 什么是WebAssembly?
WebAssembly
是一种新的编码方式,是一种为web设计的高效、低级字节码格式。我们可以将C/C++、Rust等低级语言编写的代码编译成WebAssembly字节码,现代的Web欣赏器可以加载WebAssembly,并与JavaScript协同运行。从而使得
WebAssembly成为JavaScript与C/C++混合编程并在Web上运行的最有效机制
。C/C++编译成的WebAssembly可以或许以接近原生语言的效率在欣赏器上运行。
2.1. 支持WebAssembly的欣赏器
支持WebAssembly的常用欣赏器及版本:
Chrome 57及以上版本。
Firefox 52及以上版本。
Edge 16(基于Chromium的版本)及以上。
Safari 11及以上版本。
Opera 44及以上版本。
参考信息:
https://caniuse.com/wasm
此外,Node.js从8.0版本也开始支持WebAssembly,WebAssembly目前已经成了W3C的Web标准之一。
2.2. WebAssembly的编译器
除了C/C++外,WebAssembly还支持多种其他计算机语言编译成.wasm,常见的语言和编译器如下:
C/C++
: emscripten编译工具链可以将 C/C++ 编译成 WebAssembly。
Rust
: wasm-pack:工具可以将 Rust 编译成 WebAssembly。
Go
: Go语言的官方工具就链支持将 Go 编译成 WebAssembly。
3.
开发
情况搭建
emscripten官方文档:
https://emscripten.org/docs/getting_started/downloads.html
依赖的情况准备
git
Python3.6或更新版本(Windows)
安装步骤
# 1. 从Github上克隆emsdk仓库
# emsdk即Emscripten SDK,是将C/C++编译成WebAssembly的工具
git clone https://github.com/emscripten-core/emsdk.git
# 2. 进入emsdk目录
cd emsdk
# 3. 下载和安装最新的SDK tools(包括node.js、emscripten等)
# Linux/macOS:
./emsdk install latest
# Windows:
./emsdk.bat install latest
# (安装大概需要十几分钟的时间,可以去喝杯茶休息一下了)
# 会将相关的工具安装在以下三个目录
# emsdk/node
# emsdk/upstream
# emsdk/python (Windows才有,会安装nuget)
# 4. 为当前用户设置latest版本为当前激活的工具
# Linux/macOS:
./emsdk activate latest
# Windows:
./emsdk.bat activate latest
# 5. 为当前命令终端设置环境变量
# Linux/macOS:
source ./emsdk_env.sh
# Windows:
./emsdk_env.bat
# 6. 验证是否安装成功
emcc -v
# (如果有显示正常的版本信息,则说明安装成功)
复制代码
以上示例基于3.1.72版本的emscripten。
4. Hello World程序
我们从一个Hello World程序开始,相识WebAssembly程序的
开发
、编译、运行的大抵流程。
<ol>新建一个测试目次hello_world和源码文件hello.cpp。
[code]// hello_world/hello.cpp#include int main(){ std::cout
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
农妇山泉一亩田
论坛元老
这个人很懒什么都没写!
楼主热帖
厉害了,腾讯云云巢荣获信通院“云原生 ...
2022 春节抖音视频红包系统设计与实现 ...
数据库概述
【Redis高手修炼之路】②Redis的五大数 ...
原型设计工具比较及实践--滴爱音乐 ...
ABP Framework 5.3.0 版本新增功能和变 ...
OpenHarmony和HarmonyOS有什么区别?这 ...
多线程(一)-两种创建线程的方式 ...
LoRa模块无线收发通信技术详解 ...
体系集成商已死,有事烧纸:浙江着名集 ...
标签云
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
虚拟化与私有云
Postrge-SQL技术社区
Oracle
备份
快速回复
返回顶部
返回列表