c++ - Windows 上的 QTWebKit 构建错误

标签 c++ qt qtwebkit

我有 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/

相关文章:

c++ - C memcpy 以小字节序复制字节

c# - 将 C# 应用程序转换为 C++ 枚举

c++ - 使用字符,我发现的唯一解决方案是 static_cast 两次。有没有解决的办法?

c++ - 在 C++ 中使用 QThread 多线程编程

qt - 如何在 Qt WebView 中显示嵌入的 html

c++ - CGAL继承

c++ - 从 Qt (c++) 调用 DLL 中的函数

c++ - QDockWidget - float 时没有边框的窗口

c++ - 无法使用 QtCreator #include <QWebView>

CSS 'contains' capybara 的选择器和升级