Webkit是Qt中非常独特的一个部分,代码量巨大,静态编译结果lib文件居然要1G多,而且编译容易出现一些问题。
几个月前的Qt Bug Report网站似乎还不允许报告QtWebkit的Bug,看来这个东西还不太成熟。本来我有发现一个在线程内渲染网页出错的Bug,不过就一直搁着了。
编译静态的QtWebkit,许多版本会报错,不过4.6.2似乎还是可以编译成功的,相应的configure参数为
configure -debug-and-release -static -no-qt3support -platform win32-msvc2008
最近尝试了4.7.0,不过似乎有问题。不知各位有没有在比4.6.2更新的版本上成功编译过?
然后就是建立Webkit工程了。如果是在VS2008下,默认情况下几乎是肯定链接出错。
然后上网搜了一下,有一种说法是需要添加额外的lib,于是在建立工程时全部勾选,再手动添加了phonon.lib,还是报错,其中有6个无法解析的外部符号
1>QtWebKit.lib(PluginPackageWin.obj) : error LNK2019: 无法解析的外部符号 _VerQueryValueW@16,该符号在函数 "class WebCore::String __cdecl WebCore::getVersionInfo(void * const,class WebCore::String const &)" (?getVersionInfo@WebCore@@YA?AVString@1@QAXABV21@@Z) 中被引用
1>QtWebKit.lib(PluginPackageWin.obj) : error LNK2019: 无法解析的外部符号 _GetFileVersionInfoW@16,该符号在函数 "private: bool __thiscall WebCore::PluginPackage::fetchInfo(void)" (?fetchInfo@PluginPackage@WebCore@@AAE_NXZ) 中被引用
1>QtWebKit.lib(PluginPackageWin.obj) : error LNK2019: 无法解析的外部符号 _GetFileVersionInfoSizeW@8,该符号在函数 "private: bool __thiscall WebCore::PluginPackage::fetchInfo(void)" (?fetchInfo@PluginPackage@WebCore@@AAE_NXZ) 中被引用
1>QtWebKit.lib(PluginDatabaseWin.obj) : error LNK2019: 无法解析的外部符号 __imp__PathRemoveFileSpecW@4,该符号在函数 "class WebCore::String __cdecl WebCore::safariPluginsDirectory(void)" (?safariPluginsDirectory@WebCore@@YA?AVString@1@XZ) 中被引用
1>QtWebKit.lib(PluginDatabaseWin.obj) : error LNK2019: 无法解析的外部符号 __imp__SHGetValueW@24,该符号在函数 "void __cdecl WebCore::addWindowsMediaPlayerPluginDirectory(class WTF::Vector<class WebCore::String,0> &)" (?addWindowsMediaPlayerPluginDirectory@WebCore@@YAXAAV?$Vector@VString@WebCore@@$0A@@WTF@@@Z) 中被引用
1>QtWebKit.lib(PluginDatabaseWin.obj) : error LNK2019: 无法解析的外部符号 __imp__PathCombineW@12,该符号在函数 "void __cdecl WebCore::addMacromediaPluginDirectories(class WTF::Vector<class WebCore::String,0> &)" (?addMacromediaPluginDirectories@WebCore@@YAXAAV?$Vector@VString@WebCore@@$0A@@WTF@@@Z) 中被引用
另一种说法是要手动qmake,然后nmake。这个还没有尝试过,等以后确认了再来回帖。