我有 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 中的一个错误,但我不确定。
你能帮我解决这个问题吗?
最佳答案
错误似乎与在您的 QtNetwork 发布 dll 文件中找不到符号有关。原因是您在不支持 OpenSSL 的情况下构建了该模块。
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'
根据评论讨论,您似乎只在编译发布 QtNetwork 模块构建期间正确安装了 OpenSSL。这很可能是导致此问题的原因。
解决方案是按照您现在的系统重建您的 qtnetwork 发布版本,这样您将在您的 dll 中获得与 SSL 相关的符号。
请记住,标准是您需要安装 Qt 在尝试构建时可以识别的正确 openssl。
关于c++ - Windows 上的 QTWebKit 构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23958405/