emscripten、 WebAssembly,传递字符串给c函数

下面看具体的实例。

下面的代码是一个C函数,实现简单的字符串拼接,然后返回拼接的字符串。

#include 
#include 
 char* EMSCRIPTEN_KEEPALIVE outName(char *n){    
 char xhName[] = "xuanhun";   
 strcat(n, xhName);   
 return n;
}

下面使用命令进行编译:

emcc hello.cc -o test2.js

然后在页面中引用:

 
    

上面的代码我们核心部分逐行分析一下:

  var ptr = allocate(intArrayFromString("玄魂"),   'i8', ALLOC_NORMAL);

上面的intArrayFromString方法,将字符串转换为UTF8的char数组,然后allocate 方法开辟内存空间存储数据,返回指针。

 var retPtr = Module._outName(ptr);

调用C导出函数,传入字符串指针。

 var resValue = Pointer_stringify(retPtr);

调用Pointer_stringify胶水函数,将c返回的指针转换为字符串。

   _free(ptr);

释放内存。

下面查看下运行结果:

emscripten、 WebAssembly,传递字符串给c函数_第1张图片
image

WebAssembly编程实践(1.4)胶水代码初探

WebAssembly编程实践(1.3)胶水代码初探

WebAssembly编程实践(1.2)Hello World!

WebAssembly编程实践(1.1)安装Emscripten

欢迎关注玄说前端公众号

emscripten、 WebAssembly,传递字符串给c函数_第2张图片
image

QQ群:850038125

你可能感兴趣的:(emscripten、 WebAssembly,传递字符串给c函数)