Windows下Qt 6.6静态编译项目链接错误求助
Qt 6.6静态编译构建Scenegraph示例时链接oleaut32库失败问题
我在Windows上编译了Qt 6.6静态版本,尝试构建静态项目时,编译“Scenegraph”示例程序失败,出现以下链接错误:
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Qt/6.6.0-static/plugins/networkinformation/libqnetworklistmanager.a(qnetworklistmanagerevents.cpp.obj):qnetworklistmanagerevents.cpp:(.text$_ZN25QNetworkListManagerEvents24checkBehindCaptivePortalEv+0x82): undefined reference to `__imp_VariantInit' C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Qt/6.6.0-static/plugins/networkinformation/libqnetworklistmanager.a(qnetworklistmanagerevents.cpp.obj):qnetworklistmanagerevents.cpp:(.text$_ZN25QNetworkListManagerEvents24checkBehindCaptivePortalEv+0x98): undefined reference to `__imp_VariantClear' C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Qt/6.6.0-static/plugins/networkinformation/libqnetworklistmanager.a(qnetworklistmanagerevents.cpp.obj):qnetworklistmanagerevents.cpp:(.text$_ZN25QNetworkListManagerEvents24checkBehindCaptivePortalEv+0x1d9): undefined reference to `__imp_VariantClear' C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/13.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Qt/6.6.0-static/plugins/networkinformation/libqnetworklistmanager.a(qnetworklistmanagerevents.cpp.obj):qnetworklistmanagerevents.cpp:(.text$_ZN25QNetworkListManagerEvents24checkBehindCaptivePortalEv+0x24d): undefined reference to `__imp_VariantClear' collect2.exe: error: ld returned 1 exit status
使用的编译器为gcc 13.2.0。
从报错信息来看,需要链接oleaut32.lib,但Qt编译时已经包含该库,且我在调试模式下测试过oleaut库是可用的。我已经尝试在项目.pro文件中添加LIBS += -loleaut32,但仍然出现相同错误。
部分编译输出显示链接命令中确实包含了该库:
libqwindows.a -ldwmapi -limm32 -loleaut32 -lsetupapi -lshlwapi -lwinspool lib/libQt6Network.a -lbrotlidec -lbrotlicommon
我的项目.pro文件内容如下:
QT += quick QT += opengl CONFIG += c++2a CONFIG += static QMAKE_CXXFLAGS += -std=c++2a LIBS += -lgmp SOURCES += \ Squircle.cpp \ glrenderer.cpp \ main.cpp \ RESOURCES += \ qml.qrc qnx: target.path = /tmp/$${TARGET}/bin else: unix:!android: target.path = /opt/$${TARGET}/bin !isEmpty(target.path): INSTALLS += target HEADERS += \ Squircle.h \ glrenderer.h \ DISTFILES += main.qml
除了改用动态编译,还有什么解决方案?
内容的提问来源于stack exchange,提问作者John Smith
相关产品推荐
相关产品推荐

