Emscripten 헤더 문제 해결

3142 단어 webassemblychelp

배경



emscripten을 사용하여 node.js에서 실행되는 WASM용 Lua 5.4.0을 빌드하려고 합니다.

과거에는 Lua 래퍼(sol)를 사용하여 이전 emacripten 백엔드 및 C++로 이 작업을 성공적으로 수행했지만 이 추상화로 실제로는 아무 것도 배우지 못했고 C를 ​​작성하는 것을 선호합니다.

문제



어떤 이유로 헤더를 해결하는 데 거의 성공하지 못했습니다. 다음은 사용 중인 컴파일러 플래그입니다(JavaScript의 셸에서 실행).

이제 기본 hello world를 컴파일할 수 있지만 헤더를 추가하면 emacripten이 알 수 없는 기호에 대해 불평합니다.

눈에 띄는 것이 있습니까?
나는 며칠 동안 시도하고 제한된 성공으로 모든 것을 검색했습니다.

[
  '/Users/adam.crockett/Code/typescript/tidal-node/src/backend/c/main.c',
  '-o /Users/adam.crockett/Code/typescript/tidal-node/target/tidal-node-glue.js',
  '-fcolor-diagnostics',
  '-s WASM=1',
  '-s ENVIRONMENT=node',
  '-I/Users/adam.crockett/Code/typescript/tidal-node/ops/tmp/lua-5.4.0/src',
  '-L/Users/adam.crockett/Code/typescript/tidal-node/ops/tmp/lua-5.4.0/src',
  '-lliblua',
  `-s EXPORTED_RUNTIME_METHODS='["ccall","cwrap","UTF8ToString"]'`,
  `-s "EXPORTED_FUNCTIONS=['_main', '_do_string']"`
]

luaL_newstate
#include <stdio.h>
#include <string.h>

//#include <emscripten.h>
#include "lua.h" // wont resolve
#include "lauxlib.h" // wont resolve
#include "lualib.h" // wont resolve


int main()
{
    return 0;
}

int do_string(const int *script)
{
    lua_State *L = luaL_newstate();
    return 0;
}

좋은 웹페이지 즐겨찾기