WebAssembly编译器错误:使用外部库编译时出现未定义的符号



大家早上好,我开始使用webassembly。我描述了我的问题:我已经创建了一个简单的静态库(称为TinyLib(,我想在我的WebAssembly项目中使用它。TinyLib包含构造函数、析构函数和一个数字属性。WebAssembly项目(称为TestWidget(是一个简单的对话框,里面有一个标签,我在其中编写TinyLib库。我的意图是将属性的值写入标签。我尝试将这两个项目编译为桌面模式项目(Desktop Qt 5.15.0 MinGW 64位(,并取得了成功。我用Qt 5.15.0 WebAssembly编译了TinyLib,并生成了libTinyLib.alib我编译了TestWidget,alon和项目运行!现在,如果我尝试在WebAssembly模式下编译这两个项目(TestWidget使用TinyLib(,在编译TestWidget时,我会收到以下错误消息:

错误:未定义的符号:_ZN7TinyLibC1Ev警告:与-s LLD_REPORT_UNDEFINED链接可获取有关未定义符号的详细信息警告:要禁用未定义符号的错误,请使用-s ERROR_ON_undefined_symbols=0错误:未定义的符号:_ZN7TinyLibD1Ev

我试着在网上搜索,但没有成功。在这个论坛上,我发现了以下线索:https://forum.qt.io/topic/115660/add-static-library但这对我没有帮助。

你也有同样的问题吗?你是怎么解决的?

O。S.Windoows 10 Pro;问题5.15.0;EMCC 1.39.8

我的专业文件是

TestWidget.pro

QT += core gui
greaterThan (QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c ++ 11
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE = 0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += 
main.cpp 
dialog.cpp
HEADERS += 
dialog.h
FORMS += 
dialog.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:! android: target.path = /opt/$${TARGET}/bin
! isEmpty (target.path): INSTALLS += target
win32: LIBS += -L$$PWD/../../TinyLib/build-TinyLib-Qt_5_15_0_WebAssembly-Debug/ -lTinyLib
INCLUDEPATH += $$PWD/../../TinyLib/TinyLib
DEPENDPATH + = $$PWD/../../TinyLib/TinyLib

联系qt支持后,他们建议我更换

win32: LIBS += -L$$PWD/../../TinyLib/build-TinyLib-Qt_5_15_0_WebAssembly-Debug/ -lTinyLib

带有

wasm:LIBS += -L$$PWD/../../TinyLib/build-TinyLib-Qt_5_15_0_WebAssembly-Debug/ -lTinyLib

最新更新