VenomousByte 4分钟前
嗨,这个论坛很新鲜,所以如果我做错了什么,请原谅(并告诉我)。
我希望将Qt应用程序移植到WebAssembly,但被困住了。该应用程序允许用户使用第一个人类型的相机在3D空间中“飞行”。这里的问题是,Qt3DRenderer::QCamera用于促进这一运动,但似乎没有得到WebAssembly的支持。
我现在的问题是:我只是运气不好,不能这样做,还是有其他选择,第一人称相机的自由3D运动是由WebAssembly支持的?
我是这样创建*.pro文件的(并添加了一些包含目录):
@echo off
set QT_DIR=C:\...
START /WAIT %QT_DIR%\wasm_32\bin\qmake -project
ECHO # Additional Include Paths >> .\app.pro
ECHO INCLUDEPATH += .\..\.. >> .\app.pro
ECHO INCLUDEPATH += %QT_DIR%\wasm_32\include\QtWidgets >> .\app.pro
ECHO INCLUDEPATH += %QT_DIR%\wasm_32\include\QtMultimedia >> .\app.pro
ECHO # Define Cpp Version >> .\app.pro
ECHO CONFIG += c++1z >> .\app.pro
ECHO # Suppress Warnings >> .\app.pro
ECHO CONFIG += warn_off >> .\app.pro这就是我如何将整个过程编译成WebAssembly的方式:
set QT_DIR=C:\...
set VS_COMPILER_TOOLS_PATH="C:\Program Files (x86)\Microsoft Visual Studio\2017\..."
set PATH=%VS_COMPILER_TOOLS_PATH%\cl.exe;%PATH%
call E:\pcr\emsdk\emsdk.bat activate
START /WAIT %QT_DIR%\msvc2017_64\bin\uic app.ui -o ui_app.h
START /WAIT %QT_DIR%\wasm_32\bin\qmake
make这些是错误信息..。而不将%QT_DIR%\msvc2017_64\include作为包含位置添加到项目文件中:
..\..\tools/app/apprenderwidget.h:19:10: fatal error: 'Qt3DRender/QCamera' file not found..。将%QT_DIR%\msvc2017_64\include作为包含位置添加到项目文件中之后:(基本上是一堆未定义的符号错误,这些错误包括但不限于QCamera函数)
...
warning: To disable errors for undefined symbols use `-s ERROR_ON_UNDEFINED_SYMBOLS=0`
...
error: undefined symbol: _ZN10Qt3DRender7QCamera11setPositionERK9QVector3D
error: undefined symbol: _ZN10Qt3DRender7QCamera11setUpVectorERK9QVector3D
error: undefined symbol: _ZN10Qt3DRender7QCamera13setViewCenterERK9QVector3D
error: undefined symbol: _ZN10Qt3DRender7QCamera3panEfRK9QVector3D
error: undefined symbol: _ZN10Qt3DRender7QCamera4tiltEf
error: undefined symbol: _ZN10Qt3DRender7QCamera9translateERK9QVector3DNS0_23CameraTranslationOptionE
error: undefined symbol: _ZN10Qt3DRender7QCameraC1EPN8Qt3DCore5QNodeE
error: undefined symbol: _ZN10Qt3DRender7QCameraD1Ev
...发布于 2020-02-24 02:53:56
Qt WebAssembly还不支持Qt3D,因此它无法处理从维护应用程序获得的二进制安装。
您需要使用-Feature线程参数来自己配置Qt。您还需要超过1.38.30的emscripten版本。
Qt3d需要opengl (桌面),Qt WebAssembly不支持它,只有opengl es2和opengl es3。
https://stackoverflow.com/questions/59859959
复制相似问题