下面看具体的实例。前端
下面的代码是一个C函数,实现简单的字符串拼接,而后返回拼接的字符串。编程
#include <stdio.h> #include <string> char* EMSCRIPTEN_KEEPALIVE outName(char *n){ char xhName[] = "xuanhun"; strcat(n, xhName); return n; }
下面使用命令进行编译:数组
emcc hello.cc -o test2.js
而后在页面中引用:函数
<script> Module = {}; Module.onRuntimeInitialized = function () { var ptr = allocate(intArrayFromString("玄魂"), 'i8', ALLOC_NORMAL); var retPtr = Module._outName(ptr); var resValue = Pointer_stringify(retPtr); console.log(resValue); _free(ptr); } </script> <script src="test2.js"></script>
上面的代码咱们核心部分逐行分析一下:3d
var ptr = allocate(intArrayFromString("玄魂"), 'i8', ALLOC_NORMAL);
上面的intArrayFromString方法,将字符串转换为UTF8的char数组,而后allocate 方法开辟内存空间存储数据,返回指针。指针
var retPtr = Module._outName(ptr);
调用C导出函数,传入字符串指针。code
var resValue = Pointer_stringify(retPtr);
调用Pointer_stringify胶水函数,将c返回的指针转换为字符串。blog
_free(ptr);
释放内存。ip
下面查看下运行结果:内存
WebAssembly编程实践(1.2)Hello World!
WebAssembly编程实践(1.1)安装Emscripten
欢迎关注玄说前端公众号
QQ群:850038125