mmc*_*ean 5 javascript emscripten reactjs
我正在尝试将一个 JavaScript 文件导入到使用 Emscripten 从 C 代码编译的 React 中。这类似于这里的这个问题,但答案似乎不起作用。目标是能够在 JS 文件中导入函数并像调用命名函数一样调用它。我编译JS文件与MODULARIZE=1和WASM=0使用下面的命令:
emcc ../../helloWorld/ping.c -o ../../helloWorld/ping.js -s WASM=0 -s ENVIRONMENT=web -s EXTRA_EXPORTED_RUNTIME_METHODS="['cwrap']" -s MODULARIZE=1
Run Code Online (Sandbox Code Playgroud)
ping.c
#include <stdio.h>
#include <emscripten.h>
EMSCRIPTEN_KEEPALIVE
int pingIt() {
return 1;
}
Run Code Online (Sandbox Code Playgroud)
导入PingIt.js
let Module = require('./ping.js'); // Your Emscripten JS output file
let pingIt = Module().cwrap('pingIt'); // Call Module as a function
Module.exports = pingIt;
Run Code Online (Sandbox Code Playgroud)
应用程序.js
import React from 'react';
import './App.css';
import pingIt from './importPingIt.js';
export default class App extends React.Component {
handleClick = () => {
console.log("button clicked OK");
pingIt();
}
render() {
return (
<div>
<button onClick={this.handleClick}> Button 1 </button>
</div>
);
}
}
Run Code Online (Sandbox Code Playgroud)
当我编译时,我收到以下错误:
index.js:1375 ./src/ping.js
Line 87: Unexpected use of 'self' no-restricted-globals
Line 695: Expected an assignment or function call and instead saw an expression no-unused-expressions
Line 744: Expected an assignment or function call and instead saw an expression no-unused-expressions
Line 836: Expected an assignment or function call and instead saw an expression no-unused-expressions
Line 1009: Expected an assignment or function call and instead saw an expression no-unused-expressions
Line 1233: Expected an assignment or function call and instead saw an expression no-unused-expressions
Line 1487: Expected an assignment or function call and instead saw an expression no-unused-expressions
Line 2133: Expected an assignment or function call and instead saw an expression no-unused-expressions
Line 2271: Expected an assignment or function call and instead saw an expression no-unused-expressions
Line 2284: Expected an assignment or function call and instead saw an expression no-unused-expressions
Line 2302: Expected an assignment or function call and instead saw an expression no-unused-expressions
Line 2585: Expected an assignment or function call and instead saw an expression no-unused-expressions
Line 2743: Expected an assignment or function call and instead saw an expression no-unused-expressions
Line 4006: Expected an assignment or function call and instead saw an expression no-unused-expressions
Line 4640: 'define' is not defined no-undef
Line 4641: Expected imports instead of AMD define() import/no-amd
Line 4641: 'define' is not defined no-undef
Run Code Online (Sandbox Code Playgroud)
Ant*_*ris -1
您需要使用某种异步模式来等待 Wasm 模块加载。尝试这样的事情,它使用pingIt.readyPromise:
import pingItWasm from './importPingIt.js';
let pingIt = {
ready: new Promise(resolve => {
pingItWasm({
onRuntimeInitialized() {
pingIt = this.pingIt;
pingIt.ready = Promise.resolve()
resolve();
}
});
})
};
(async () {
await pingIt.ready;
pingIt();
})()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
555 次 |
| 最近记录: |