GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - NoelToby/cppwasm-book: :books:《C/C++面向WebAssembly编程》——Emscripten工程实践

BranchesTags
Open more actions menu
 
 

Latest commit

 

History

75 Commits
75 Commits

Folders and files

NameName
Last commit message
Last commit date
ch0-intro
ch0-intro
 
 
ch1-quick-guide
ch1-quick-guide
 
 
ch2-c-js
ch2-c-js
 
 
ch3-runtime
ch3-runtime
 
 
ch4-techniques
ch4-techniques
 
 
examples
examples
 
 
.bookignore
.bookignore
 
 
.editorconfig
.editorconfig
 
 
.gitattributes
.gitattributes
 
 
.gitignore
.gitignore
 
 
Makefile
Makefile
 
 
README.md
README.md
 
 
SUMMARY.md
SUMMARY.md
 
 
book.json
book.json
 
 
cover.jpg
cover.jpg
 
 
cover.png
cover.png
 
 
cover_small.jpg
cover_small.jpg
 
 
favicon.ico
favicon.ico
 
 
preface.md
preface.md
 
 
server.go
server.go
 
 
weixin-wasm-hackers.jpg
weixin-wasm-hackers.jpg
 
 

Repository files navigation

C/C++面向WebAssembly编程

本书介绍了在工程化应用中使用C/C++进行WebAssembly开发的方法。关于WebAssembly的基础知识可以参考《WebAssembly标准入门》,预售地址:

  • 异步:https://www.epubit.com/book/detail/40619
  • 京东:https://item.jd.com/12499372.html

  • 作者:丁尔男,Github @3dgen
  • 作者:柴树杉,Github @chai2010,Twitter @chaishushan
  • 项目地址:https://github.com/3dgen/cppwasm-book

前言

Ending's law: "Any application that can be compiled to WebAssembly, will be compiled to WebAssembly eventually."

WebAssembly是新一代的Web虚拟机标准,C/C++程序可以通过Emscripten工具链编译为WebAssembly二进制格式.wasm,进而导入网页中供JavaScript调用——这意味着使用C/C++编写的程序将可以直接运行在网页中。

本书从Emscripten基本使用开始介绍了C/C++开发WebAssembly模块的方法;并且以作者在实际工程项目中获取的一手经验为基础,提出了一些一般性的设计原则和技术框架。

笔者认为,一个理想的面向Web的C/C++工程应该对编译目标不敏感——既可以被编译为NativeCode直接运行,也可以被编译为WebAssembly在网页中运行,二者的切换只需要更改运行环境设置,如此方可充分利用现有IDE环境强大的开发、调试、分析、测试等功能,提高工程质量、降低开发成本。

但WebAssembly的运行环境毕竟与本地环境有着巨大的差异,因此为了达到上述理想目标,从整体框架到接口设计甚至到函数间的数据交换层面都必须充分考虑Web环境的特点(或者说限制),而这正是本书所贯彻的“WebAssembly友好”的内涵所在。

在线阅读

  • SUMMARY.md
  • https://3dgen.cn/cppwasm-book

参考资料

  • 《WebAssembly标准入门》
  • WebAssembly资料精选:https://github.com/chai2010/awesome-wasm-zh

关注微信公众号 (wasm-hackers) 或 QQ群 (726475047)


当前进度

  • 第0章 WebAssembly简介

  • 第1章 Emscripten快速入门

    • 1.1 安装Emscripten
    • 1.2 你好,世界!
    • 1.3 胶水代码初探
    • 1.4 编译目标及编译流程
  • 第2章 C与JavaScript互操作

    • 2.1 JavaScript调用C函数
    • 2.2 JavaScript函数注入C
    • 2.3 单向透明的内存模型
    • 2.4 JavaScript与C交换数据
    • 2.5 EM_ASM系列宏
    • 2.6 emscripten_run_script系列函数
    • 2.7 ccall/cwrap
    • 2.8 补充说明
  • 第3章 Emscripten运行时

    • 3.1 main函数与生命周期
    • 3.2 消息循环
    • 3.3 文件系统
    • 3.4 内存管理
    • 3.5 Module定制及其他
    • 3.6 小结
  • 第4章 WebAssembly友好的一般性方法

    • 4.1 消息循环分离
    • 4.2 内存对齐
    • 4.3 使用C接口导出C++对象
    • 4.4 C++对象生命周期控制
    • 4.5 使用C接口注入JavaScript对象
    • 4.6 小心int64
    • 4.7 忘掉文件系统
  • 第5章 网络IO

    • 5.1 WebSocket
    • 5.2 ajax
    • 5.3 fetch
    • 5.4 一个通用的网络IO小框架
  • 第6章 多线程

    • 6.1 JavaScript中的多线模型
    • 6.2 一个例子
    • 6.3 一个通用的多线程小框架
  • 第7章 GUI及交互

    • 7.1 canvas
    • 7.2 鼠标事件
    • 7.3 键盘事件
    • 7.4 触屏事件
  • 第8章 工程管理

    • 8.1 使用Makefile
    • 8.2 静态库

版权声明

自有版权,转载请联系作者。

About

📚《C/C++面向WebAssembly编程》——Emscripten工程实践

3dgen.cn/cppwasm-book

Resources

Readme
Activity
Custom properties

Stars

0 stars

Watchers

1 watching

Forks

0 forks
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.