emscripten:js调用c入门

c是一种古老而又经典的语言,js是一种流行的解释语言,用于各种不同的场合,在客户端、服务器端都有非常多的用武之地。

emscripten是一个可以将C代码编译成WebAssembly的神奇工具,而且还能实现js对c代码的调用。

1、emscripten的安装

1)从github下载emsdk

      下载地址:https://github.com/emscripten-core/emsdk

       选择"Clone or download => Download ZIP" 即下载 emsdk-master.zip,解压到如:c:\emsdk-master

2) 安装emsdk

       进入上一步解压目录c:\emsdk-master,依次执行:

       a) emsdk install latest

       b) emsdk activate latest

       c) emsdk_env.bat

       更多信息参见:https://emscripten.org/docs/getting_started/downloads.html

3)编写C代码,命名为add.c

       #include <emscripten.h>

       // 实现一个加法

       EMSCRIPTEN_KEEPALIVE

       int add(int a,int b)

       {

           return a+b;

       }

4) 编译C代码,生成add.js 和 add.wasm

       emcc add.c -o add.js -s

5) 编写调用代码,命名为:test.js

    // 引用模块

    var add = require('add.js');

    add.onRuntimeInitialized = function() {
        console.log(add._add(1,1))
    }

6) 执行测试

这里我们,采用后端框架nodejs来执行test.js文件,(Nodejs的安装包下载:https://nodejs.org/zh-cn/download/,选择windows64位.msi,下载后执行缺省安装)  ,命令如下:

c:\emsdk-master>node test.js

   输出结果:

   

 完结:至此,emscripten的入门就完成了。

  

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Emscripten 工具链可以使用 `-s EXPORTED_FUNCTIONS` 和 `-s EXTRA_EXPORTED_RUNTIME_METHODS` 选项来导出 C 函数和 Emscripten 运行时函数,以便在 JavaScript 中调用它们。但是,Emscripten 不支持直接调用 Windows DLL。 如果您需要在 Emscripten调用 Windows DLL,可以使用一些第三方工具,例如 `em-dll` 或 `emscripten-wrapper-creator`。以下是一个示例使用 `em-dll` 的步骤: 1. 安装 em-dll 工具。您可以通过 npm 安装 em-dll,命令如下: ``` npm install -g em-dll ``` 2. 将需要调用的 Windows DLL 文件复制到您的工作目录中。 3. 使用 em-dll 工具创建一个包装器 C 文件,以便在 Emscripten调用 Windows DLL。以下是一个示例命令: ``` em-dll --output=wrapper.c mydll.dll ``` 这个命令将创建一个名为 `wrapper.c` 的 C 文件,包含 Windows DLL 中导出的函数的包装器。您可以将这个文件添加到您的项目中,并使用 Emscripten 工具链编译它。 4. 在您的 JavaScript 代码中,使用 `cwrap` 函数来调用导出的函数。以下是一个示例代码: ```javascript var mydll = Module.cwrap('my_function', 'number', ['number']); var result = mydll(42); ``` 这个代码将使用 `cwrap` 函数来创建一个 `mydll` 函数,该函数将调用 Windows DLL 中名为 `my_function` 的函数,并将参数 42 传递给它。函数的返回值将存储在 `result` 变量中。 需要注意的是,由于 Windows DLL 只能在 Windows 环境中运行,因此您需要在 Windows 操作系统上编译和测试您的 DLL 文件。在将其移植到 Emscripten 中之前,您可能需要进行一些修改,以确保其与 Emscripten 兼容。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值