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
目录
相关文章
|
10天前
|
JavaScript 前端开发 Python
用python执行js代码:PyExecJS库
文章讲述了如何使用PyExecJS库在Python环境中执行JavaScript代码,并提供了安装指南和示例代码。
54 1
用python执行js代码:PyExecJS库
|
6天前
|
编解码 前端开发 JavaScript
javascript检测网页缩放演示代码
javascript检测网页缩放演示代码
|
8天前
|
Web App开发 JavaScript 前端开发
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
|
9天前
|
存储 JavaScript 前端开发
webSocket+Node+Js实现在线聊天(包含所有代码)
文章介绍了如何使用WebSocket、Node.js和JavaScript实现在线聊天功能,包括完整的前端和后端代码示例。
42 0
|
5天前
|
存储 JavaScript 前端开发
改进JavaScript代码,给水果有序赋色
改进JavaScript代码,给水果有序赋色
|
7天前
|
存储 JSON JavaScript
JavaScript帮我编写快递自动分拣的代码,区分省份市区县城乡镇
JavaScript帮我编写快递自动分拣的代码,区分省份市区县城乡镇在JavaScript中编写一个用于快递自动分拣的代码,区分省份、市区、县、城乡镇,通常意味着你需要一个数据结构来存储这些地理区域的信息,并编写逻辑来根据快递地址中的信息将其分配到正确的分类中。 这里,我将提供一个简化的示例,说明如何使用JavaScript对象和函数来实现这一功能。请注意,这个示例是高度简化的,并且假设你已经有了某种方式(如正则表达式或API调用)来从快递地址中提取省份、市区、县等信息。 ----------------------------------- ©著作权归作者所有:来自51CTO博客作者goS
|
8天前
|
JavaScript 前端开发 Python
python执行js代码
本文档详细介绍如何安装Node.js环境及PyExecJS库,并提供示例代码展示其功能。首先,通过指定链接安装Node.js,安装完毕后可在命令行中输入`node --version`来验证安装是否成功。接着,使用`pip install PyExecJS`安装PyExecJS库,该库允许Python程序执行JavaScript代码。文档还提供了多个示例代码,展示了如何在Python环境中执行和编译JavaScript代码,并可以选择特定的JavaScript运行时环境,如Node.js或JScript。最后,通过具体案例展示了PyExecJS的功能与使用方法。
16 3
|
17天前
|
JavaScript
网站内容禁止复制的js代码
网站内容禁止复制的js代码
|
23天前
|
缓存 JavaScript 前端开发
js和html代码一定要分离吗
JavaScript(JS)和HTML代码的分离虽非绝对必要,但通常被推荐
|
6天前
|
C++ Windows
HTML+JavaScript构建C++类代码一键转换MASM32代码平台
HTML+JavaScript构建C++类代码一键转换MASM32代码平台