我有QT 5.3和一个使用QWebView小部件的应用程序。但是我有一台没有SSE2的PC(这对于QT 5.3来说是必需的),所以我决定从没有SSE2的源代码构建QT来在这台PC上运行我的应用程序。 QT编译没有问题但是当我想编译QTWebKit模块时出现错误:
(...)-LC:/qt-5.3.0/qtbase/lib -lQt5Positioning -LC:/qt-5.3.0/qtbase/lib -lQt5Sensors -LC:/qt-5.3.0/qtbase/lib -lQt5Core
Warning: resolving _cti_vm_throw by linking to @cti_vm_throw@4
Use --enable-stdcall-fixup to disable these warnings
Use --disable-stdcall-fixup to disable these fixups
C:/qt-5.3.0/qtwebkit/WebKitBuild/Release/Source/WebKit2/release/libWebKit2.a(QtNetworkAccessManager.o):QtNetworkAccessManager.cpp:(.text+0x310): undefined reference to `_imp___ZN13QNetworkReply15ignoreSslErrorsERK5QListI9QSslErrorE'
C:/qt-5.3.0/qtwebkit/WebKitBuild/Release/Source/WebKit2/release/libWebKit2.a(QtNetworkAccessManager.o):QtNetworkAccessManager.cpp:(.text$_ZN5QListI9QSslErrorED1 Ev[__ZN5QListI9QSslErrorED1Ev]+0x14): undefined reference to `_imp___ZN9QSslErrorD1Ev'
C:/Qt/Tools/mingw482_32/bin/../lib/gcc/i686-w64-mingw32/4.8.2/../../../../i686-w64-mingw32/bin/ld.exe: C:/qt-5.3.0/qtwebkit/WebKitBuild/Release/Source/WebKit2/release/libWebKit2.a(QtNetworkAccessManager.o): bad reloc address 0x14 in section `.text$_ZN5QListI9QSslErrorED1Ev[__ZN5QListI9QSslErrorED1Ev]'
collect2.exe: error: ld returned 1 exit status
我想这是由于
Warning: resolving _cti_vm_throw by linking to @cti_vm_throw@4
我也考虑过webkit中的一个错误,但我不确定。
你能帮我解决这个问题吗?
答案 0 :(得分:0)
错误似乎是QtNetwork版本dll文件中找不到符号。原因是您在没有OpenSSL支持的情况下构建了该模块。
C:/qt-5.3.0/qtwebkit/WebKitBuild/Release/Source/WebKit2/release/libWebKit2.a(QtNetworkAccessManager.o):QtNetworkAccessManager.cpp:(.text + 0x310):未定义引用`_imp___ZN13QNetworkReply15ignoreSslErrorsERK5QListI9QSslErrorE'
C:/qt-5.3.0/qtwebkit/WebKitBuild/Release/Source/WebKit2/release/libWebKit2.a(QtNetworkAccessManager.o):QtNetworkAccessManager.cpp :(。text $ _ZN5QListI9QSslErrorED1 Ev [__ ZN5QListI9QSslErrorED1Ev] + 0x14):未定义的引用`_imp ___ ZN9QSslErrorD1Ev'
根据评论讨论,您似乎只在编译发布QtNetwork模块版本时正确安装了OpenSSL。这很可能就是这个问题的原因。
解决方案是在您的系统现在重建qtnetwork发布版本,因此您将在dll中获得与SSL相关的符号。
请记住,标准是您需要进行正确的openssl安装,Qt在尝试构建时可以识别。