
Emscripten
文章平均质量分 67
小白啥时候能进阶成功
理解乃记忆之母,重复乃记忆之父。一遍不懂看两遍,两遍不懂看三遍,书读百遍其义自见。
展开
-
Emscripten中的文件系统
跨平台的C/C++程序常使用fopen()、fread()、fwrite()等Libc/LibCXX提供的同步文件访问函数。通常在文件系统方面,JavaScript程序与C/C++本地程序有巨大的差异,主要体现在:运行在浏览器中的JavaScript程序无法访问本地文件系统; 在JavaScript中,无论ajax()还是fetch(),都是异步操作。Emscripten提供了一套虚拟文件系统,以兼容Libc/LibCXX提供的同步文件访问函数。在最底层,Emscripten提供了3种文件系统,原创 2021-10-08 15:59:35 · 1904 阅读 · 0 评论 -
Emscripten运行main和Emscripten_set_main_loop
一、main()函数与生命周期对于Emscripten来说,main()函数既不是必需的,也不控制运行时生命周期。1、test.c#include <stdio.h>#include <emscripten.h>//extern "C" {EMSCRIPTEN_KEEPALIVE int show_answer(){ return 42;}int main(){ printf("hello world\n"); return 1;}//}原创 2021-10-08 14:32:51 · 1469 阅读 · 0 评论 -
WebAssembly导出C结构体
一、C代码#include<emscripten/emscripten.h>#include<stdlib.h>typedef struct { unsigned char * str; int a; double c;}data;data d = {(unsigned char *)"我是字符串",111,3.141592634571};data* EMSCRIPTEN_KEEPALIVE getData(){ return &am原创 2021-08-25 09:51:00 · 594 阅读 · 0 评论 -
ModuleNotFoundError: No module named ‘requests‘
第一步:在/usr/local/lib/python3.6/urllib/request.py中在request.py的开头部分(大概100行左右)添加如下代码import sslssl._create_default_https_context = ssl._create_unverified_context第二步:在报错的部位:"/home/hyde/emsdk/upstream/emscripten/tools/system_libs.py"中,添加如下标识"verify =原创 2021-08-10 14:20:14 · 426 阅读 · 0 评论 -
JavaScript和WebAssembly
一、JavaScript的运行过程首先得说说在浏览器中称霸的编程语言JavaScript。JavaScript诞生于1995年,在web界发展迅速。随着前端需求的日益增长,2008年时各大浏览器厂商开始了激烈的性能大战,此时大家都开始引入了JIT(just-in-time即时编译器),大大提高了JS的运行速度。JIT的出现使JS被运用于一些意想不到的事,如使用Node.js和Electron来构建应用程序,使前端产生了更多的可能性。当我们把JS添加到浏览器中时,浏览器并不能直接读懂我们的JS代码,就原创 2021-01-27 16:15:39 · 713 阅读 · 0 评论 -
WebAssembly发展史
1. WebAssembly和JavaScript的关系原创 2021-01-26 13:49:29 · 1166 阅读 · 0 评论 -
JS主线程和worker线程通讯方式
JS主线程和worker线程通讯方式一、概述JavaScript 语言采用的是单线程模型,也就是说,所有任务只能在一个线程上完成,一次只能做一件事。前面的任务没做完,后面的任务只能等着。随着电脑计算能力的增强,尤其是多核 CPU 的出现,单线程带来很大的不便,无法充分发挥计算机的计算能力。Web Worker 的作用,就是为 JavaScript 创造多线程环境,允许主线程创建 Worker 线程,将一些任务分配给后者运行。在主线程运行的同时,Worker 线程在后台运行,两者互不干扰。等到 W原创 2021-01-07 20:13:00 · 3689 阅读 · 0 评论 -
JS与底层C++通讯方式
JS与底层C++通讯方式WebAssembly与Emscripten1. Emscripten为了在浏览器中运行C/C++程序,从1995年起,许多知名项目相继开发。除尝试直接运行本地C++代码外,也有技术人员另辟蹊径,将其他语言直接转译为JavaScript后运行,Emscripten就是其中一个,它利用LLVM编译器前端编译C++代码,生成LLVM特有的跨平台中间语言代码,最终再将LLVM跨平台中间语言代码转译为JavaScript的子集WebAssembly。这样C/C++程序经过编译后不仅原创 2021-01-07 20:10:31 · 1583 阅读 · 0 评论 -
windows/web/Linux的位移操作
*********************三个平台均为32位编译器********************1. windows平台右移0位,code为1,rack为1。左移32位,rack为1。2. Linux平台rack=1,左移32位:编译时有警告:left shift cout >=width,但运行结果为1。左移33位,结果为2。结果:和windows保持一致。3. web平台(Emscripten)rack=1,左移32位:编译时有警告:left shif原创 2020-11-24 17:28:17 · 361 阅读 · 0 评论 -
C调用JS接口
一、在同一线程中进行调用1.EM_ASM方法#include <emscripten.h>#include <stdio.h>int main() { int res=EM_ASM_INT({ alert('hello world!'); console.log('I received:'+$0); return $0+1; },100 ); printf("%d\n",res); return 0;}2.EM_JS方法#includ原创 2020-11-13 14:36:12 · 674 阅读 · 0 评论