UE4.27 HTML5支持
Closed this issue · 10 comments
想在4.27引擎使用Puerts插件,可以打包成HTML5,在网页上运行
4.27打包HTML5已经OK,但是Puerts插件打包失败
如果要实现这样的事情,我该怎么做,可以给我一些步骤,或者需要了解的知识点吗?谢谢
引擎:
https://github.com/SpeculativeCoder/UnrealEngine-HTML5-ES3 这个分支4.27-html5-es3
支持啊,我试过i没问题
首先得quickjs版本才支持。
其次我记得会有个tail-call的编译错误,需要加编译参数,或者你把这个模块去掉(这个用不上): https://github.com/Tencent/puerts/tree/master/unreal/Puerts/Source/WasmCore
下载这个Unreal_v1.0.6p1
版本的这个包puerts_quickjs.tgz,直接放到项目内,并且打开插件,编译完成之后(没报错),直接打包时,报如下错误,请问我该怎么处理
Running AutomationTool...
Parsing command line: -ScriptsForProject=E:/UE/4.27/Html5Engine/Html5Project/Html5Project.uproject BuildCookRun -nocompileeditor -nop4 -project=E:/UE/4.27/Html5Engine/Html5Project/Html5Project.uproject -cook -stage -archive -archivedirectory=E:/UE/4.27/Html5Engine/Html5Project/Packages/V10 -package -ue4exe=E:\UE\ue-4.27-html5-es3\Engine\Binaries\Win64\UE4Editor-Cmd.exe -compressed -ddc=DerivedDataBackendGraph -prereqs -nodebuginfo -targetplatform=HTML5 -build -target=Html5Project -clientconfig=Development -utf8output -compile -compile
Dependencies are up to date (0.173s). Skipping compile.
Setting up ProjectParams for E:\UE\4.27\Html5Engine\Html5Project\Html5Project.uproject
********** BUILD COMMAND STARTED **********
Running: E:\UE\ue-4.27-html5-es3\Engine\Binaries\DotNET\UnrealBuildTool.exe UnrealPak Win64 Development -Project=E:\UE\4.27\Html5Engine\Html5Project\Html5Project.uproject E:\UE\4.27\Html5Engine\Html5Project\Html5Project.uproject -NoUBTMakefiles -Manifest=E:\UE\ue-4.27-html5-es3\Engine\Intermediate\Build\Manifest.xml -NoHotReload -log="E:\UE\ue-4.27-html5-es3\Engine\Programs\AutomationTool\Saved\Logs\UBT-UnrealPak-Win64-Development.txt"
Writing manifest to E:\UE\ue-4.27-html5-es3\Engine\Intermediate\Build\Manifest.xml
Target is up to date
Total execution time: 0.66 seconds
Took 0.7191139s to run UnrealBuildTool.exe, ExitCode=0
Running: E:\UE\ue-4.27-html5-es3\Engine\Binaries\DotNET\UnrealBuildTool.exe Html5Project HTML5 Development -Project=E:\UE\4.27\Html5Engine\Html5Project\Html5Project.uproject E:\UE\4.27\Html5Engine\Html5Project\Html5Project.uproject -NoUBTMakefiles -remoteini="E:\UE\4.27\Html5Engine\Html5Project" -skipdeploy -Manifest=E:\UE\ue-4.27-html5-es3\Engine\Intermediate\Build\Manifest.xml -NoHotReload -log="E:\UE\ue-4.27-html5-es3\Engine\Programs\AutomationTool\Saved\Logs\UBT-Html5Project-HTML5-Development.txt"
h5conf HTML5ToolChain (static constructor): EnableMultithreading = True
h5conf HTML5ToolChain: EnableMultithreading = True
h5conf HTML5ToolChain: OffscreenCanvas = False
h5conf HTML5ToolChain: LLVMWasmBackend = True
h5conf HTML5ToolChain: EnableTracing = False
h5conf HTML5ToolChain: ProfilerMode =
h5conf HTML5ToolChain: SessionStorageCommandLineKey =
h5conf HTML5ToolChain: EnableSIMD = False
h5conf HTML5ToolChain: 3rd party lib path = lib-3.1.45-up-mt
h5conf Setting Emscripten SDK: located in E:\UE\ue-4.27-html5-es3\Engine\Platforms\HTML5\Build\emsdk\emsdk-3.1.45\upstream\emscripten
h5conf Emscripten Config File: E:\UE\ue-4.27-html5-es3\Engine\Platforms\HTML5\Build\emsdk\emsdk-3.1.45\.emscripten
h5conf HTML5ToolChain: Development -O1 fast compile time
XXX: -o E:\UE\4.27\Html5Engine\Html5Project\Binaries\HTML5\Html5Project.js
Writing manifest to E:\UE\ue-4.27-html5-es3\Engine\Intermediate\Build\Manifest.xml
Building Html5Project...
Building 2 actions with 32 processes...
[1/2] Html5Project.js
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::Isolate::GetCurrent()
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::Isolate::SetCurrent(v8::Isolate*)
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>)
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::InstanceTemplate()
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::ObjectTemplate::SetInternalFieldCount(int)
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::PrototypeTemplate()
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int)
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>)
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute)
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::PrototypeTemplate()
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int)
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>)
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute)
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::PrototypeTemplate()
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int)
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>)
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute)
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::PrototypeTemplate()
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int)
wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>)
wasm-ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
emcc: error: 'E:/UE/ue-4.27-html5-es3/Engine/Platforms/HTML5/Build/emsdk/emsdk-3.1.45/upstream/bin\wasm-ld.exe @E:\UE\ue-4.27-html5-es3\Engine\Platforms\HTML5\Build\emsdk\emsdk-3.1.45\tmp\emscripten__o3pucmz.rsp.utf-8' failed (returned 1)
Took 4.3881091s to run UnrealBuildTool.exe, ExitCode=6
UnrealBuildTool failed. See log for more details. (E:\UE\ue-4.27-html5-es3\Engine\Programs\AutomationTool\Saved\Logs\UBT-Html5Project-HTML5-Development.txt)
AutomationTool exiting with ExitCode=6 (6)
BUILD FAILED
是去年和微信一起搞的,好像JsEnv.build.cs还要有点什么设置,其它用法什么都一样,我有空找下记录。
下载这个
Unreal_v1.0.6p1
版本的这个包puerts_quickjs.tgz,直接放到项目内,并且打开插件,编译完成之后(没报错),直接打包时,报如下错误,请问我该怎么处理Running AutomationTool... Parsing command line: -ScriptsForProject=E:/UE/4.27/Html5Engine/Html5Project/Html5Project.uproject BuildCookRun -nocompileeditor -nop4 -project=E:/UE/4.27/Html5Engine/Html5Project/Html5Project.uproject -cook -stage -archive -archivedirectory=E:/UE/4.27/Html5Engine/Html5Project/Packages/V10 -package -ue4exe=E:\UE\ue-4.27-html5-es3\Engine\Binaries\Win64\UE4Editor-Cmd.exe -compressed -ddc=DerivedDataBackendGraph -prereqs -nodebuginfo -targetplatform=HTML5 -build -target=Html5Project -clientconfig=Development -utf8output -compile -compile Dependencies are up to date (0.173s). Skipping compile. Setting up ProjectParams for E:\UE\4.27\Html5Engine\Html5Project\Html5Project.uproject ********** BUILD COMMAND STARTED ********** Running: E:\UE\ue-4.27-html5-es3\Engine\Binaries\DotNET\UnrealBuildTool.exe UnrealPak Win64 Development -Project=E:\UE\4.27\Html5Engine\Html5Project\Html5Project.uproject E:\UE\4.27\Html5Engine\Html5Project\Html5Project.uproject -NoUBTMakefiles -Manifest=E:\UE\ue-4.27-html5-es3\Engine\Intermediate\Build\Manifest.xml -NoHotReload -log="E:\UE\ue-4.27-html5-es3\Engine\Programs\AutomationTool\Saved\Logs\UBT-UnrealPak-Win64-Development.txt" Writing manifest to E:\UE\ue-4.27-html5-es3\Engine\Intermediate\Build\Manifest.xml Target is up to date Total execution time: 0.66 seconds Took 0.7191139s to run UnrealBuildTool.exe, ExitCode=0 Running: E:\UE\ue-4.27-html5-es3\Engine\Binaries\DotNET\UnrealBuildTool.exe Html5Project HTML5 Development -Project=E:\UE\4.27\Html5Engine\Html5Project\Html5Project.uproject E:\UE\4.27\Html5Engine\Html5Project\Html5Project.uproject -NoUBTMakefiles -remoteini="E:\UE\4.27\Html5Engine\Html5Project" -skipdeploy -Manifest=E:\UE\ue-4.27-html5-es3\Engine\Intermediate\Build\Manifest.xml -NoHotReload -log="E:\UE\ue-4.27-html5-es3\Engine\Programs\AutomationTool\Saved\Logs\UBT-Html5Project-HTML5-Development.txt" h5conf HTML5ToolChain (static constructor): EnableMultithreading = True h5conf HTML5ToolChain: EnableMultithreading = True h5conf HTML5ToolChain: OffscreenCanvas = False h5conf HTML5ToolChain: LLVMWasmBackend = True h5conf HTML5ToolChain: EnableTracing = False h5conf HTML5ToolChain: ProfilerMode = h5conf HTML5ToolChain: SessionStorageCommandLineKey = h5conf HTML5ToolChain: EnableSIMD = False h5conf HTML5ToolChain: 3rd party lib path = lib-3.1.45-up-mt h5conf Setting Emscripten SDK: located in E:\UE\ue-4.27-html5-es3\Engine\Platforms\HTML5\Build\emsdk\emsdk-3.1.45\upstream\emscripten h5conf Emscripten Config File: E:\UE\ue-4.27-html5-es3\Engine\Platforms\HTML5\Build\emsdk\emsdk-3.1.45\.emscripten h5conf HTML5ToolChain: Development -O1 fast compile time XXX: -o E:\UE\4.27\Html5Engine\Html5Project\Binaries\HTML5\Html5Project.js Writing manifest to E:\UE\ue-4.27-html5-es3\Engine\Intermediate\Build\Manifest.xml Building Html5Project... Building 2 actions with 32 processes... [1/2] Html5Project.js wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::Isolate::GetCurrent() wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::Isolate::SetCurrent(v8::Isolate*) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::InstanceTemplate() wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::ObjectTemplate::SetInternalFieldCount(int) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::PrototypeTemplate() wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::PrototypeTemplate() wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::PrototypeTemplate() wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::PrototypeTemplate() wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>) wasm-ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors) emcc: error: 'E:/UE/ue-4.27-html5-es3/Engine/Platforms/HTML5/Build/emsdk/emsdk-3.1.45/upstream/bin\wasm-ld.exe @E:\UE\ue-4.27-html5-es3\Engine\Platforms\HTML5\Build\emsdk\emsdk-3.1.45\tmp\emscripten__o3pucmz.rsp.utf-8' failed (returned 1) Took 4.3881091s to run UnrealBuildTool.exe, ExitCode=6 UnrealBuildTool failed. See log for more details. (E:\UE\ue-4.27-html5-es3\Engine\Programs\AutomationTool\Saved\Logs\UBT-Html5Project-HTML5-Development.txt) AutomationTool exiting with ExitCode=6 (6) BUILD FAILED
你的这些报错是没编译backend_quickjs的wasm版本。
下载这个
Unreal_v1.0.6p1
版本的这个包puerts_quickjs.tgz,直接放到项目内,并且打开插件,编译完成之后(没报错),直接打包时,报如下错误,请问我该怎么处理Running AutomationTool... Parsing command line: -ScriptsForProject=E:/UE/4.27/Html5Engine/Html5Project/Html5Project.uproject BuildCookRun -nocompileeditor -nop4 -project=E:/UE/4.27/Html5Engine/Html5Project/Html5Project.uproject -cook -stage -archive -archivedirectory=E:/UE/4.27/Html5Engine/Html5Project/Packages/V10 -package -ue4exe=E:\UE\ue-4.27-html5-es3\Engine\Binaries\Win64\UE4Editor-Cmd.exe -compressed -ddc=DerivedDataBackendGraph -prereqs -nodebuginfo -targetplatform=HTML5 -build -target=Html5Project -clientconfig=Development -utf8output -compile -compile Dependencies are up to date (0.173s). Skipping compile. Setting up ProjectParams for E:\UE\4.27\Html5Engine\Html5Project\Html5Project.uproject ********** BUILD COMMAND STARTED ********** Running: E:\UE\ue-4.27-html5-es3\Engine\Binaries\DotNET\UnrealBuildTool.exe UnrealPak Win64 Development -Project=E:\UE\4.27\Html5Engine\Html5Project\Html5Project.uproject E:\UE\4.27\Html5Engine\Html5Project\Html5Project.uproject -NoUBTMakefiles -Manifest=E:\UE\ue-4.27-html5-es3\Engine\Intermediate\Build\Manifest.xml -NoHotReload -log="E:\UE\ue-4.27-html5-es3\Engine\Programs\AutomationTool\Saved\Logs\UBT-UnrealPak-Win64-Development.txt" Writing manifest to E:\UE\ue-4.27-html5-es3\Engine\Intermediate\Build\Manifest.xml Target is up to date Total execution time: 0.66 seconds Took 0.7191139s to run UnrealBuildTool.exe, ExitCode=0 Running: E:\UE\ue-4.27-html5-es3\Engine\Binaries\DotNET\UnrealBuildTool.exe Html5Project HTML5 Development -Project=E:\UE\4.27\Html5Engine\Html5Project\Html5Project.uproject E:\UE\4.27\Html5Engine\Html5Project\Html5Project.uproject -NoUBTMakefiles -remoteini="E:\UE\4.27\Html5Engine\Html5Project" -skipdeploy -Manifest=E:\UE\ue-4.27-html5-es3\Engine\Intermediate\Build\Manifest.xml -NoHotReload -log="E:\UE\ue-4.27-html5-es3\Engine\Programs\AutomationTool\Saved\Logs\UBT-Html5Project-HTML5-Development.txt" h5conf HTML5ToolChain (static constructor): EnableMultithreading = True h5conf HTML5ToolChain: EnableMultithreading = True h5conf HTML5ToolChain: OffscreenCanvas = False h5conf HTML5ToolChain: LLVMWasmBackend = True h5conf HTML5ToolChain: EnableTracing = False h5conf HTML5ToolChain: ProfilerMode = h5conf HTML5ToolChain: SessionStorageCommandLineKey = h5conf HTML5ToolChain: EnableSIMD = False h5conf HTML5ToolChain: 3rd party lib path = lib-3.1.45-up-mt h5conf Setting Emscripten SDK: located in E:\UE\ue-4.27-html5-es3\Engine\Platforms\HTML5\Build\emsdk\emsdk-3.1.45\upstream\emscripten h5conf Emscripten Config File: E:\UE\ue-4.27-html5-es3\Engine\Platforms\HTML5\Build\emsdk\emsdk-3.1.45\.emscripten h5conf HTML5ToolChain: Development -O1 fast compile time XXX: -o E:\UE\4.27\Html5Engine\Html5Project\Binaries\HTML5\Html5Project.js Writing manifest to E:\UE\ue-4.27-html5-es3\Engine\Intermediate\Build\Manifest.xml Building Html5Project... Building 2 actions with 32 processes... [1/2] Html5Project.js wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::Isolate::GetCurrent() wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::Isolate::SetCurrent(v8::Isolate*) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::InstanceTemplate() wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::ObjectTemplate::SetInternalFieldCount(int) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::PrototypeTemplate() wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::PrototypeTemplate() wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::PrototypeTemplate() wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::Template::Set(v8::Local<v8::Name>, v8::Local<v8::Data>, v8::PropertyAttribute) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::PrototypeTemplate() wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::String::NewFromUtf8(v8::Isolate*, char const*, v8::NewStringType, int) wasm-ld: error: E:\\UE\\4.27\\Html5Engine\\Html5Project\\Intermediate\\Build\\HTML5\\Html5Project\\Development\\JsEnv\\Module.JsEnv.1_of_3.cpp.o: undefined symbol: v8::FunctionTemplate::New(v8::Isolate*, void (*)(v8::FunctionCallbackInfo<v8::Value> const&), v8::Local<v8::Value>) wasm-ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors) emcc: error: 'E:/UE/ue-4.27-html5-es3/Engine/Platforms/HTML5/Build/emsdk/emsdk-3.1.45/upstream/bin\wasm-ld.exe @E:\UE\ue-4.27-html5-es3\Engine\Platforms\HTML5\Build\emsdk\emsdk-3.1.45\tmp\emscripten__o3pucmz.rsp.utf-8' failed (returned 1) Took 4.3881091s to run UnrealBuildTool.exe, ExitCode=6 UnrealBuildTool failed. See log for more details. (E:\UE\ue-4.27-html5-es3\Engine\Programs\AutomationTool\Saved\Logs\UBT-Html5Project-HTML5-Development.txt) AutomationTool exiting with ExitCode=6 (6) BUILD FAILED
你的这些报错是没编译backend_quickjs的wasm版本。
该怎么编译呢,github上找了这个库,但是没有详细的文档描述怎么编译
是去年和微信一起搞的,好像JsEnv.build.cs还要有点什么设置,其它用法什么都一样,我有空找下记录。
谢谢,我已经弄好了,可以在网页上运行了
可以分享下过程,应该还有其他有需要的童靴
https://github.com/SpeculativeCoder/UnrealEngine/tree/4.27-html5-es3 这个分支4.27-html5-es3
Puerts
Unreal_v1.0.6p1
版本的这个包puerts_quickjs.tgz
注意事项:
- 需要编译
backend_quickjs
的wasm
版本,参考下方编译方法,完成后拷贝到Plugins/Puerts/ThirdParty/quickjs/Lib/HTML5/libquickjs.a
- 修改
JsEnv.build.cs
文件UseQuickjs = true
,移除WasmCore
依赖,在ThirdPartyQJS
函数添加平台第三方库支持
else if (Target.Platform == UnrealTargetPlatform.HTML5)
{
string V8LibraryPath = Path.Combine(LibraryPath, "HTML5");
PublicAdditionalLibraries.Add(Path.Combine(V8LibraryPath, "libquickjs.a"));
//PrivateDefinitions.Add("BUILDING_V8_SHARED");
}
Puerts.uplugin
移除WasmCore
模块,Puerts
模块WhitelistPlatforms
添加HTML5
DefaultGame.ini
添加+DirectoriesToAlwaysStageAsNonUFS=(Path="JavaScript")
拷贝JS代码
backend_quickjs 编译
- 安装 emscripten 这个工具用于将代码编译成
wasm
库 - 下载这个库 backend-quickjs
- 安装 mingw 编译工具
- 修改
CMakeLists.txt
,添加编译参数-matomics -fno-exceptions
set(qjs_cflags -Wall -matomics -fno-exceptions)
- 创建
build
目录 - 在
build
目录下运行终端命令 emcmake cmake ..
emmake make
运行完成后会在build
目录下生成libquickjs.a
quickjs HTML5
可以下载我编译好的文件放在Plugins/Puerts/ThirdParty/quickjs/Lib/HTML5/libquickjs.a
libquickjs.zip