저는 WebAssembly에 관한 훌륭한 책을 읽고 있으며 "글루 코드"를 사용하지 않고 JS 기능을 가져오는 방법을 배우려고 합니다 wasm
.
2개의 extern
함수가 선언된 C 파일입니다
그런 다음 다음 지침을 사용하여 c
코드를 c
代码编译为 wasm
로 컴파일했습니다.
그런 다음 instantiate
wasm文件,定义jsFillRect()
和jsClearRect()
并使用导入对象将它们导入到模块的env
.JS 스크립트를 작성하라는 지시를 받았습니다.
오류가 발생했습니다:
으아아아여기에 표시된 가져온 개체는 이미 원래 개체(여기에서 찾을 수 있음)의 수정된 버전입니다. 이 예에서 함수는 JS에서 _jsClearRect()
,但模块找不到 jsClearRect()
的定义。然后它找不到 __memory_base
的定义,因为它被声明为 memoryBase
但现在我不知道 Object
的国王代表 GOT.mem
로 선언됩니다.
둘러보니 오래된 API를 사용하고 있는 것 같은 느낌이 들었지만 이를 달성하는 데 적합한 솔루션을 찾을 수 없습니다.
제 질문은:
Javascript 기능을 wasm 모듈로 가져오는 방법은 무엇입니까?
GOT.mem
来自 emscripten 使用的动态链接 ABI。在这种情况下,我认为您不需要动态链接内容,您可以/应该删除-sSIDE_MODULE
.이렇게 하면 제공해야 하는 가져오기가 단순화/줄어들게 됩니다. (예를 들어
table
或memory
를 제공할 필요가 없습니다.)