html中的文档格式及举例,跟我一起从零开始学习WebAssembly(三)、最简单的例子hello world(使用自定义HTML模板)...

文章目录

创建C++代码片

创建我们的自定义HTML模板文件

编译

运行实例

有时我们想要使用我们自定义HTML模板。让我们来看看我们如何做到这一点。

创建C++代码片

首先,创建一个名为hello2的目录。

ee967dde595a991c393ae12202f18595.png

其次,在该目录下创建一个名为hello2.c文件。

160124df695826cd0ac6a0c54a9fe0b4.png

并将以下C++代码保存在文件中:

#include

int main(int argc, char ** argv)

{

printf("Hello World\n");

}

创建我们的自定义HTML模板文件

1、在我们的emsdk库中搜索shell_minimal.html文件(如我的是:D:\emsdk\fastcomp\emscripten\src)。

717fc6b268f1ad2deed14ed019eb8ca0.png

2、在我们当前目录的上一级创建一个html_template目录。

67eadd094b15dff4d525667f153e6888.png

3、将shell_minimal.html文件复制到html_template目录。

378de6dad1bc927f0e3f8e0b8b0347f2.png

编译

现在进入到hello2目录(再次,在Emscripten编译器环境终端窗口中),然后运行以下命令:

emcc -o hello2.html hello2.c -O3 -s WASM=1 --shell-file html_template/shell_minimal.html

然而我们发现会报错,

Traceback (most recent call last):

File "D:\emsdk\fastcomp\emscripten\emcc.py", line 3420, in

sys.exit(run(sys.argv))

File "D:\emsdk\fastcomp\emscripten\emcc.py", line 2318, in run

memfile, optimizer)

File "D:\emsdk\fastcomp\emscripten\emcc.py", line 3237, in generate_html

wasm_binary_target, memfile, optimizer)

File "D:\emsdk\fastcomp\emscripten\emcc.py", line 3010, in generate_traditional_runtime_html

shell = read_and_preprocess(options.shell_path)

File "D:\emsdk\fastcomp\emscripten\tools\shared.py", line 3272, in read_and_preprocess

run_js(path_from_root('tools/preprocessor.js'), NODE_JS, args, True, stdout=open(stdout, 'w'), cwd=path)

File "D:\emsdk\fastcomp\emscripten\tools\shared.py", line 1089, in run_js

return jsrun.run_js(filename, engine, *args, **kw)

File "D:\emsdk\fastcomp\emscripten\tools\jsrun.py", line 129, in run_js

universal_newlines=True)

File "D:\emsdk\python\2.7.13.1_64bit\python-2.7.13.amd64\lib\subprocess.py", line 390, in __init__

errread, errwrite)

File "D:\emsdk\python\2.7.13.1_64bit\python-2.7.13.amd64\lib\subprocess.py", line 640, in _execute_child

startupinfo)

WindowsError: [Error 267]

如图:

7179a7fffa1fc3e4e62cdae65acb1a63.png

根据提示,我们跟踪到最后一个文件,看看里面的内容:

657c820841b6deb3bf66ab4d3fb3c626.png

我们主要看抛异常的地方:

except pywintypes.error, e:

# Translate pywintypes.error to WindowsError, which is

# a subclass of OSError. FIXME: We should really

# translate errno using _sys_errlist (or similar), but

# how can this be done from Python?

raise WindowsError(*e.args)

看看官方的描述:将pywintypes.error转换为WindowsError,它是OSError的子类。 FIXME:我们应该使用_sys_errlist(或类似的)来转换错误码,但是如何从Python中完成呢?。

那么说白了就是将python的错误码转换为window错误码。

最终输出:

WindowsError: [Error 267],其实就给我们windows中使用的GetlastError一样,而我们找到windows错误码为267,是路劲错误。

最终定位到我们命令中的html_template/shell_minimal.html路劲有问题,要么使用绝对路劲,要么前面加上../,

最后我们修改如下:

emcc -o hello2.html hello2.c -O3 -s WASM=1 --shell-file ../html_template/shell_minimal.html

编译成功。

a1263c670b08092594c76b5d29e5d145.png

我们通过的选项这次略有不同:

我们已经指定了-o hello2.html,这意味着编译器仍将输出JavaScript粘合代码和.html。

我们还指定了–shell-file html_template/shell_minimal.html- 这提供了您想要用来创建HTML的HTML模板的路径,您将通过该示例运行。

590ae451324c77585f74a09ab1b0dda2.png

运行实例

现在让我们运行这个例子。上面的命令将生成hello2.html,它将与模板具有相同的内容,并添加一些粘合代码以加载生成的wasm,运行它等。在浏览器中打开它,你会看到与最后一个相同的输出例。

先看看我们的模板效果:

7c793e24299ab215fc72c553de1eac3b.png

再看实例效果,看看是否跟模板一样:

93662d0fabf73de947ae561b494f7967.png

注意:您可以通过在-o标志中指定.js文件而不是HTML文件来指定仅输出JavaScript“glue”文件*而不是完整的HTML ,例如 emcc -o hello2.js hello2.c -O3 -s WASM=1。然后,您可以从头开始构建自定义HTML,尽管这是一种高级方法; 使用提供的HTML模板通常更容易。

Emscripten需要各种各样的JavaScript“粘合”代码来处理内存分配,内存泄漏以及许多其他问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337698.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

设计模式适配器模式_21世纪的设计模式:适配器模式

设计模式适配器模式这是我的演讲的第三部分,“ 21世纪的设计模式” 。 适配器模式桥接世界。 在一个世界中,我们有一个概念的界面。 在另一个世界,我们有不同的界面。 这两个接口有不同的用途,但有时我们需要进行转移。 在编写良…

excel单元格斜线_掌握这20个Excel技巧,小白轻松变大神

掌握一些Excel小技巧,可以让你的工作效率翻倍,原本半个小时才能搞定的,现在几秒就可以轻松搞定。1、调整单元格大小选中表格,将光标移到表格顶部边框处,等其变成双向箭头即可移动。2、快速插入空行选中行,按…

html鼠标滚动效果代码,JS+CSS实现大气清新的滑动菜单效果代码

本文实例讲述了JSCSS实现大气清新的滑动菜单效果代码。分享给大家供大家参考,具体如下:这是一款比较大气清新的滑动导航菜单,CSS和JavaScript配合完成,鼠标放到一级菜单上,会滑出二级的菜单,兼容性也不错&a…

docker和java容器_使用Docker容器和Java EE进行持续交付

docker和java容器组织需要一种使应用程序交付快速,可预测和安全的方法,而诸如docker之类的容器所提供的敏捷性则可以帮助开发人员实现这一目标。 对于Java EE应用程序,这可以在容器中打包应用程序,应用程序服务器和其他依赖项&…

alientek ministm32液晶显示程序_佳显12864中文字库液晶专业生产液晶显示模块

GDRAM:(Graphic Display RAM):图形显示RAM,这一块区域用于绘图,往里面写啥,屏幕就会显示啥,它与DDRAM的区别在于,往DDRAM中写的数据是字符的编码,字符的显示先是在CGROM中找到字模&a…

C++ 面试考点(一)

点击蓝字关注我们C 基础1、引用和指针的区别?初始化:引用在定义的时候必须进行初始化,并且不能够改变指针在定义的时候不一定要初始化,并且指向的空间可变访问逻辑不同:通过指针访问对象, 用户需要使用间接访问通过引用访问对象, 用户只需使用…

dojo还有人用吗_我的Dojo中有一个Mojo(如何编写Maven插件)

dojo还有人用吗我一直忙于在工作中使用Maven的腋窝。 对于很多开发人员,我会听到:“那又怎样。” 区别在于,我通常在无法直接访问Internet的环境中工作。 因此,当我说我经常使用Maven时,这意味着某些事情。 依赖地狱 …

html5 css3炫酷效果,28种纯CSS3炫酷loading加载动画特效

这是一组效果非常炫酷的纯CSS3 Loading加载动画特效。这组loading动画共有27种不同的效果。每一种loading动画都是通过CSS3的keyframes帧动画来完成的,每一个加载动画都构思新颖,效果非常的酷。安装可以通过bower来按钮这个loading动画特效:b…

中点和中值滤波的区别_频谱仪和EMI测试接收机什么区别?安泰维修中心分享

测试人员在选择使用射频仪器的时候都在纠结选择频谱仪还是测试接收机又或者信号分析仪。下面由安泰频谱分析仪维修中心分享频谱仪和EMI测试接收机什么区别?测量接收机是什么?频谱仪和信号分析仪什么区别?信号源分析仪是什么?一、频…

C++ 面试必问:深入理解虚函数表

点击蓝字关注我们深入理解C 虚函数表C中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。Derive d; Base1 *b1 &d; Base2 *b2 &d; Base3 *b3 &…

html 图片剪裁压缩,HTML5 canvas实现图片拉伸、压缩与裁剪

前言:我们在网页中经常会用到图片展示,通常情况下会给一个固定的宽高来显示这个图片,然而从服务器端上传的图片大小是不确定的,如果直接按默认填充这个框有时候就会特别丑orz。作为一个完(wai)美(mao)主(xie)义(hui)者&#xff0c…

switch日文键盘打中文_12月有哪些Switch游戏值得期待?

文章转自A9vg,作者setsuka_duki 经历了11月的游戏浪潮后,一年中最后一个月份也悄然而至,相比较“战火连天”的11月,在12月发售的重量级游戏并不算太多,这边为大家整理12月哪些值得一玩的Switch游戏。 《Tools Up!》(分…

基于 C++11 的线程池 threadpool , 简洁且可以带任意多的参数

点击蓝字关注我们咳咳。C11 加入了线程库,从此告别了标准库不支持并发的历史。然而 c 对于多线程的支持还是比较低级,稍微高级一点的用法都需要自己去实现,譬如线程池、信号量等。线程池(thread pool)这个东西,在面试上多次被问到…

c# 字典排序_Python零基础入门之列表与字典

本篇内容需结合源码,获取方法看末尾数据结构数据结构就是指从计算机存储、组织数据的结构列表(List) 元组(Tuple)字典(Dictionary)集合(Set)列表(List)列表中的数据按顺序排列列表有正序与倒序两种索引列表可存储任意类型数据,且允许重复创建列表变量名 …

jaxb xsd生成xml_使用JAXB和Jackson从XSD生成JSON模式

jaxb xsd生成xml在本文中,我演示了一种从XML Schema (XSD)生成JSON Schema的 方法 。 在概述从XML Schema创建JSON Schema的方法的同时,本文还演示了JAXB实现的使用(与JDK 9捆绑在一起的xjc版本2.2.12-b150331.1824 [b…

C语言中结构体struct的用法

点击蓝字关注我们定义结构体变量下面举一个例子来说明怎样定义结构体变量。struct string { char name[8]; int age; char sex[2]; char depart[20]; float wage1, wage2, wage3, wage4, wage5; }person;这个例子定义了一个结构名为string的结构体变量person。还可以省略变量名…

html全屏漂浮,jquery全屏漂浮广告插件,可点击关闭(原创)

jquery全屏漂浮广告插件 兼容主流浏览器 实现简单 调用简单 在线预览 源码下载jquery全屏漂浮广告插件 兼容主流浏览器 实现非常简单说明:jquery在1.9开始不支持.live()方法的写法而改用.on(),见http://jquery.com/upgrade-guide/1.9/#live-removed.该插…

C++ 面试考点(二)

点击蓝字关注我们11、extern 用法?extern 修饰变量的声明如果文件a.c 需要引用b.c 中变量int v,就可以在a.c 中声明extern int v,然后就可以引用变量v。extern 修饰函数的声明如果文件a.c 需要引用b.c 中的函数,比如在b.c 中原型是…

内存不能为read进不去桌面_四级报名进不去怎么办

英语四级报名进不去怎么办?这里提供有两种方法,一种是重复刷新,直到页面出现;另外一种就是错峰报名,叉开登录高峰期。很多考生在报名的时候遇到困难,最多的就是报名页面进不去,这个时候有一些考生就会产生疑惑&#x…

C语言线程库的使用,这篇值得收藏!

点击蓝字关注我们1. 线程概述线程是轻量级的进程(LWP:light weight process),在 Linux 环境下线程的本质仍是进程。在计算机上运行的程序是一组指令及指令参数的组合,指令按照既定的逻辑控制计算机运行。操作系统会以进…