JS에서 C++로 사용자 정의 모듈을 전달하는 방법

4789 단어
Emscripten을 사용하여 JS에서 C++ 코드로 사용자 정의 모듈을 전달하는 것은 보기보다 쉬운 작업입니다!
Emscripten을 사용하여 JS에서 C++로 모듈을 전달하는 방법을 보여주는 작은 예를 만들었습니다. val::global()
우선 로딩을 위한 C++ 함수를 작성해야 합니다. 다음과 같습니다.

int loadCustomModule (std::string globalModuleName) {
  val ModuleClass = val::global(globalModuleName.c_str());
    if (!ModuleClass.as<bool>()) {
    std::cout << "No global module " << globalModuleName;
  }
  return 0;
}


그런 다음 EMSCRIPTEN_BINDINGS를 사용하여 이 함수를 JS에 전달해야 합니다.

EMSCRIPTEN_BINDINGS(module) {
  function("loadCustomModule", &loadCustomModule);
}


그래, 그게 다야! 이제 JS에서 loadCustomModule 함수를 사용할 수 있습니다.

class HelloWorldCustomModule {
    helloWorld() {
        console.log('Hello, World!')
    }
}
var Module = {
    onRuntimeInitialized: function () {
        window.HelloWorldCustomModule = HelloWorldCustomModule;
        Module.loadCustomModule('HelloWorldCustomModule')
    }
};


그리고 마지막 단계는 C++에서 우리의 HelloWorldCustomModule를 사용하는 것입니다.

int loadCustomModule (std::string globalModuleName) {
  // ... first part is above
  val module = ModuleClass.new_();
  module.call<val>("helloWorld");
  return 0;
}


편집




em++ -lembind -o passCustomModule.js passCustomModule.cpp -s ERROR_ON_UNDEFINED_SYMBOLS=0 -Wall --bind


찾을 수 있는 HTML의 전체 예there

좋은 웹페이지 즐겨찾기