当前位置: 首页 > 面试题库 >

如何在React / React Native中使用Emscripten编译的JavaScript

南宫凡
2023-03-14
问题内容

我目前正在使用Emscripten将基本的C函数编译为JavaScript,以在React
Native项目中使用。但是,当我Module从React代码内部导入时,Module对象为空。这在React和React Native项目中都会发生。

index.js 在我的终端上运行会node ./index.js返回预期结果。

我正在编译ping.c并使用以下命令输出ping.js:

emcc ping.c -o ping.js -s WASM=0 -s EXPORTED_FUNCTIONS='["_pingIt"]'

ping.c:

#include <stdio.h>
#include <emscripten.h>

EMSCRIPTEN_KEEPALIVE
int pingIt() {
  return 1;
}

index.js:

let Module = require('./ping.js');

module.exports = Module;

我正在从中导出Module index.js并将其导入到我的React代码中。

// Running in React
console.log(Module); // returns {}

预期行为

// Running in React
console.log(Module._pingIt()); // should return 1

问题答案:

我碰到一个偶然MODULARIZE的Emscripten文档设置在这里。我编辑了emcc命令:

emcc ping.c -o ping.js -s WASM=0 -s ENVIRONMENT=web -s EXTRA_EXPORTED_RUNTIME_METHODS='["cwrap"]' -s MODULARIZE=1

MODULARIZE=1 成为魔术位

现在在index.js文件中:

let Module = require('./ping.js'); // Your Emscripten JS output file
let pingIt = Module().cwrap('pingIt'); // Call Module as a function

module.exports = pingIt;

现在,您可以在React组件中import pingIt from '<file- location>';像调用其他函数一样调用该函数pingIt()

希望有人觉得这有用!我找不到与React一起使用Emscripten的许多示例



 类似资料:
  • 我有两个问题。 ①当useState初始值真假时,if语句如何适应下面? 比如说。。 ②当if语句为true和false时,如何使setGoodBotton从React钩子和if语句适应下面? 例如…(这不是工作)

  • 本节将展示一个使用Emscripten及Worker的并发执行的例子。 先来看C部分的代码: //pi.cc double Random() { static int seed = 1; static int const a = 16807, m = 2147483647, q = 127773, r = 2836; seed = a * (seed % q) - r * (seed /

  • 我目前能够编译一个具有以下import语句的类:

  • 在NetBeans 7.2中,我很难找到如何在Maven项目中使用-Xlint:unchecked进行编译。在Ant项目下,可以通过转到项目属性来更改编译器标志- 有没有办法使用Maven将IDE配置为使用此类标志进行编译?

  • 问题内容: 在NetBeans 7.2中,我很难找到如何在Maven项目中使用-Xlint:unchecked进行编译。在Ant项目下,可以通过转到Project Properties-> Compiling来更改编​​译器标志,但是Maven项目似乎没有任何此类选项。 有什么方法可以使用Maven将IDE配置为使用此类标志进行编译? 问题答案: 我猜您可以在pom.xml中设置编译器参数。请参考