티스토리 뷰

콘솔창에 보이는 에러

웹어셈블리 인 액션 예제를 따라하다가 만나게 된 에러

Uncaught (in promise) LinkError: WebAssembly.instantiate(): Import #0 module="env" function="__memory_base" error: global import must be a number, valid Wasm reference, or WebAssembly.Global object

 

책이랑 똑같이 했는데 안 된다.

더보기

WebAssembly in Action (p.70 ~ 82)

 

1. side_module.c 파일 만들기

int Increment(int value) {
	return (value + 1);
}

 

 

2. 웹어셈블리 모듈로 컴파일

컴파일 후 생성된 파일 확인
emcc side_module.c -s SIDE_MODULE=2 -O1 -s EXPORTED_FUNCTIONS=['_Increment'] -o side_module.wasm

 

 

3. side_module.html 작성

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8"/>
	</head>
	<body>
		HTML page I created for my WebAssembly module.

		<script>
			const importObject = {
				env: {
					__memory_base: 0,
				}
			};
			WebAssembly.instantiateStreaming(fetch("side_module.wasm"),
				importObject).then(result => {
					const value = result.instance.exports.Increment(17);
					console.log(value.toString());
			});
		</script>
	</body>
</html>

 

해결방법 : 컴파일 시 최적화 플래그 -O1에서 -O2로 변경

emcc side_module.c -s SIDE_MODULE=2 -O2 -s EXPORTED_FUNCTIONS=['_Increment'] -o side_module.wasm

참고 자료

끝!

반응형
LIST
댓글
링크
공지사항
최근에 올라온 글