WebAssembly01--c代码调用js

简介: WebAssembly01--c代码调用js

编译选项

emcc test.c --js-library pkg.js -o test.js

pkg.js

mergeInto(LibraryManager.library,{
js_add:function(a,b) {
console.log("js_add");
return a+b;
    },
js_console_log_int:function(param){
console.log("js_console_log_in:"+param);
    }
})

test.c

#ifndef EM_PORT_API
# if defined(__EMSCRIPTEN__)
#   include <emscripten.h>
#   if defined(__cplusplus)
#     define EM_PORT_API(rettype) extern "C" rettype EMSCRIPTEN_KEEPALIVE
#   else
#     define EM_PORT_API(rettype) rettype EMSCRIPTEN_KEEPALIVE
#   endif
# else
#   if defined(__cplusplus)
#     define EM_PORT_API(rettype) extern "C" rettype
#   else
#     define EM_PORT_API(rettype) rettype
#   endif
# endif
#endif
#include<stdio.h>
#include<emscripten.h>
#include<stdlib.h>
#include<string.h>
EM_PORT_API(int) js_add(int a,int b);
EM_PORT_API(void) js_console_log_int(int param);
EM_PORT_API(void) print_the_answer(){
  int i=js_add(21,21);
  js_console_log_int(i);
}
EM_PORT_API(char*) str_merge(char* str1,char* str2)
{
  int str1_len = 0;
  int str2_len = 0;
  int size = 0;
  char *buf = NULL;
  if(str1) str1_len = strlen(str1);
  if(str2) str2_len = strlen(str2);
  size = str1_len+str2_len;
  buf = (char*)malloc(size);
  memset(buf,0,size);
  if(str1_len>0)strncpy(buf,str1,str1_len);
  if(str2_len>0)strncpy(buf+str1_len,str2,str2_len);
  return buf;//return merge result
}
EM_PORT_API(int) add(int a,int b)
{
  return a+b;
}
int main(int argc,char** argv)
{
  return add(1,2);  
}
<html>
  <head>
    <title>test page</title>
  </head>
  <body>
    <script >
    Module={}
    Module.onRuntimeInitialized=function(){
      Module._print_the_answer();
    }
    </script>
    <script src="test.js"></script>
  </body>
</html>
emrun --no_browser --port 8000 test.html
目录
相关文章
|
5天前
|
前端开发 JavaScript
js 等待接口访问成功后执行指定代码【3种方法】(含async await Promise的使用)
js 等待接口访问成功后执行指定代码【3种方法】(含async await Promise的使用)
6 1
|
5天前
|
JavaScript
js 【实用技巧】给全文代码添加一键复制按钮
js 【实用技巧】给全文代码添加一键复制按钮
11 1
|
6天前
|
前端开发 JavaScript 定位技术
JavaScript 等待异步请求数据返回值后,继续执行代码 —— async await Promise的使用方法
JavaScript 等待异步请求数据返回值后,继续执行代码 —— async await Promise的使用方法
12 1
|
7天前
|
JSON JavaScript 前端开发
JavaScript 技巧:干净高效的代码写法
JavaScript 技巧:干净高效的代码写法
10 1
|
7天前
|
前端开发 JavaScript Serverless
前端新手建议收藏的JavaScript 代码技巧
前端新手建议收藏的JavaScript 代码技巧
|
1天前
|
JavaScript
js 延时执行代码的最佳实践 —— 自定义 sleep 函数
js 延时执行代码的最佳实践 —— 自定义 sleep 函数
2 0
|
2天前
|
JavaScript 前端开发
js【深度解析】代码的执行顺序
js【深度解析】代码的执行顺序
6 0
|
5天前
|
Web App开发 JavaScript 前端开发
Android端使用WebView注入一段js代码实现js调用android
Android端使用WebView注入一段js代码实现js调用android
15 0
|
7天前
|
前端开发 JavaScript Java
高效前端开发技巧:如何优化JavaScript代码执行效率
在当今互联网应用日益复杂的背景下,前端开发者面临着更高的性能要求。本文探讨了一些提升JavaScript代码执行效率的实用技巧,包括优化循环结构、减少内存占用以及利用现代浏览器的优化能力。通过这些方法,开发者可以在保持代码清晰易读的前提下,显著提升应用程序的响应速度和用户体验。
|
10天前
|
Web App开发 JavaScript 前端开发
技术好文共享:非常好的一个JS代码(CJL.0.1.js)
技术好文共享:非常好的一个JS代码(CJL.0.1.js)