首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在React / React中使用已编译的JavaScript

问如何在React / React中使用已编译的JavaScript
EN

Stack Overflow用户
提问于 2019-01-09 17:51:11
回答 2查看 4.6K关注 0票数 15

我目前正在使用Emscripten将一个基本的C函数编译成JavaScript,以便在中使用。但是,当我从内部反应代码导入Module时,Module是空的。这发生在反应和反应的本机项目。

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

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

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

ping.c:

代码语言:javascript
复制
#include <stdio.h>
#include <emscripten.h>

EMSCRIPTEN_KEEPALIVE
int pingIt() {
  return 1;
}

index.js:

代码语言:javascript
复制
let Module = require('./ping.js');

module.exports = Module;

我正在从index.js导出模块并将它导入到我的反应代码中。

当前行为

代码语言:javascript
复制
// Running in React
console.log(Module); // returns {}

预期行为

代码语言:javascript
复制
// Running in React
console.log(Module._pingIt()); // should return 1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-09 20:34:14

我在Emscripten docs 这里中偶然发现了一个这里设置。我编辑了emcc命令:

代码语言:javascript
复制
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文件中:

代码语言:javascript
复制
let Module = require('./ping.js'); // Your Emscripten JS output file
let pingIt = Module().cwrap('pingIt'); // Call Module as a function

module.exports = pingIt;

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

希望有人能找到有用的东西!我找不到很多使用Emscripten的例子,同时也没有反应。

票数 15
EN

Stack Overflow用户

发布于 2021-03-26 15:19:02

我使用了一种稍微不同的方法,通过为模块定义一个EXPORT_NAME,并在您的代码中合适的时候创建模块,从而从调用ping.c函数。

使用Emscripten emsdk:

代码语言:javascript
复制
emcc ping.c -o ping.js -s WASM=0 -s ENVIRONMENT=web -s MODULARIZE=1 -s "EXPORT_NAME='createPingModule'"

在React本机组件(App.tsx)中:

代码语言:javascript
复制
import createPingModule from './ping';

...

createPingModule()
  .then(module => {
    console.log('Module created!');
    let a = module._pingIt();
    console.log(a);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54115783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档