DEV.log

Uncaught TypeError: Module._malloc is not a function 본문

WebAssembly/웹어셈블리 인 액션

Uncaught TypeError: Module._malloc is not a function

magnae2016 2022. 1. 30. 14:42

Where did the problem occur?

  • 도서명
    웹어셈블리 인 액션
  • 구분
    주요 기술 오류(로직/코드)
  • 상품 버전
    종이책
  • 페이지
    98~107 페이지
  • 위치정보
    4.1 엠스크립튼 연결 코드로 동작하는 웹어셈블리 모듈 생성하기
    4.1.4 모듈과 상호작용할 자바스크립트 작성
  • 본문 내용
    이렇게 문자열이 담긴 메모리는 ValidateName, ValidateCategory 같은 모듈 함수를 단순히 호출하는 것보다 오래 지속되므로 onClickSave 함수가 직접 수동으로 메모리를 관리해야 합니다. 표준 C 라이브러리 함수 malloc, free를 사용할 수 있게 엠스크립튼 연결 코드에서 제공되는 _malloc, _free 함수를 이용하면 모듈 메모리를 할당/해제할 수 있습니다.
    // 오류 메세지를 담을 256바이트의 모듈 메모리를 확보한다.
    const errorMessagePointer = Module._malloc(256);

 

Problem
엠스크립튼 3.1.2 버전에서 실습할 경우 개발자 도구 콘솔창에서 오류를 확인할 수 있습니다.

 

Uncaught TypeError: Module._malloc is not a function

 

Answers

다음과 같이 -s EXPORTED_FUNCTIONS=["_malloc","_free"]부분을 추가하고

명령어를 실행해서 엠스크립튼 모듈을 다시 생성합니다.

emcc validate.cpp -s EXPORTED_FUNCTIONS=["_malloc","_free"] -s EXPORTED_RUNTIME_METHODS=['ccall','UTF8ToString'] -o validate.js

 

Environment

  • macOS
  • emcc (Emscripten gcc/clang-like replacement + linker emulating GNU ld) 3.1.2
  • python-3.9.2
  • node-14.18.2

 

참고 자료

https://gis8282.tistory.com/entry/Uncaught-TypeError-Modulemalloc-is-not-a-function

http://www.yes24.com/Product/Goods/92907281

 

웹어셈블리 인 액션 - YES24

웹 개발의 새로운 지평을 열게 될 잠재력 높은 기술!웹어셈블리를 처음 접하는 분을 위한 안내서로, 자바스크립트에 의존하지 않고도 브라우저 기반의 고성능 애플리케이션을 만들 수 있는 방

www.yes24.com

0 Comments
댓글쓰기 폼