Используя Emscripten, я пытаюсь скомпилировать ImpulseEngine project by Randy Gaul (C++) в программу JavaScript. Как только я запустил Emscripten, я последовал за учебником, описанным here. Я выполнил все шаги: Связывание .cpp-файлов с файлами .bc, а затем их компиляцию в .js.Компиляция C++ ImpulseEngine для JavaScript с Emscripten
Вот список команд, я побежал:
.cpp -> .bc:
emcc ImpulseEngine-master/main.cpp -o main.bc
emcc ImpulseEngine-master/Scene.cpp -o Scene.bc
emcc ImpulseEngine-master/Render.cpp -o Render.bc
emcc ImpulseEngine-master/Precompiled.cpp -o Precompiled.bc
emcc ImpulseEngine-master/Manifold.cpp -o Manifold.bc
emcc ImpulseEngine-master/Collision.cpp -o Collision.bc
emcc ImpulseEngine-master/Clock.cpp -o Clock.bc
emcc ImpulseEngine-master/Body.cpp -o Body.bc
.bc -> .js
emcc main.bc Scene.bc Render.bc Precompiled.bc Manifold.bc Collision.bc Clock.bc Body.bc -s LEGACY_GL_EMULATION=1 -o github/khanfusiion3.github.io/index.html
Примечание опция -s LEGACY_GL_EMULATION=1
: Это для включения функций OpenGL. Конечно, когда я выполнил команду, я все-таки получил несколько предупреждений о ненайденных символах, как показано здесь:
warning: unresolved symbol: glPointSize
warning: unresolved symbol: glRasterPos2i
warning: unresolved symbol: glutBitmapCharacter
warning: unresolved symbol: glutBitmap9By15
Теоретически программа потерпит неудачу в настоящее время, независимо от того, что произойдет дальше, но я пытался так или иначе. Он сразу же выбросил ошибку и вышел. Вот список каждой ошибки записываются в консоли:
WARNING: using emscripten GL emulation. This is a collection of limited workarounds, do not expect it to work.Module.printErr @ khanfusiion3.github.io/:1249
khanfusiion3.github.io/:1249 WARNING: using emscripten GL emulation unsafe opts. If weirdness happens, try -s GL_UNSAFE_OPTS=0Module.printErr @ khanfusiion3.github.io/:1249
khanfusiion3.github.io/:1249 pre-main prep time: 12 msModule.printErr @ khanfusiion3.github.io/:1249
khanfusiion3.github.io/:1249 WARNING: using emscripten GL immediate mode emulation. This is very limited in what it supportsModule.printErr @ khanfusiion3.github.io/:1249
khanfusiion3.github.io/:1249 missing function: glRasterPos2iModule.printErr @ khanfusiion3.github.io/:1249
khanfusiion3.github.io/:1237 -1
khanfusiion3.github.io/:1249 -1Module.printErr @ khanfusiion3.github.io/:1249
khanfusiion3.github.io/:1249 warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demanglingModule.printErr @ khanfusiion3.github.io/:1249
/index.js:1879 Uncaught abort(-1) at Error
at jsStackTrace (http://khanfusiion3.github.io/index.js:1060:13)
at stackTrace (http://khanfusiion3.github.io/index.js:1077:22)
at abort (http://khanfusiion3.github.io/index.js:25065:44)
at _glRasterPos2i (http://khanfusiion3.github.io/index.js:8051:58)
at __Z12RenderStringiiPKc (http://khanfusiion3.github.io/index.js:13374:2)
at Array.__Z11PhysicsLoopv (http://khanfusiion3.github.io/index.js:9462:2)
at dynCall_v (http://khanfusiion3.github.io/index.js:24605:30)
at Object.Runtime.dynCall (http://khanfusiion3.github.io/index.js:331:39)
at http://khanfusiion3.github.io/index.js:8107:21
at Object.Browser.mainLoop.runIter (http://khanfusiion3.github.io/index.js:1873:13)
Я также попытался запустить его с опцией -s DEMANGLE_SUPPORT=1
но другие ошибки не остановить, так что до сих пор не удалось.
Любая помощь в том, что вызывает ошибки и как их исправить?
Похоже, что символы glPointSize, glRasterPos2i, glutBitmapCharacter и glutBitmap9By15 не были решены. Как вы уже видели. – immibis