VenomousByte 4 分钟前
嗨,这个论坛的绝对新手,所以如果我做错了什么,请原谅(并告诉)我。
我希望将 Qt 应用程序移植到 WebAssembly 但被卡住了。该应用程序允许用户使用第一人称相机“飞”过 3D 空间。这里的问题是,Qt3DRenderer::QCamera 用于促进这种运动,但 WebAssembly 似乎不支持。
我现在的问题是:我只是运气不好而无法完成,还是 WebAssembly 支持的具有自由 3D 运动的第一人称相机有替代方案?
这就是我创建 *.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
...