2010-03-27 101 views
5

我试图用MS VS 2008静态编译Qt + Webkit,并且这个工作正常。静态编译QWebKit 4.6.2

1> Creating library C:\Users\Geeko\Desktop\Qt\TestQ\Release\TestQ.lib and object C:\Users\Geeko\Desktop\Qt\TestQ\Release\TestQ.exp 
1>QtWebKit.lib(PluginPackageWin.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function "class WebCore::String __cdecl WebCore::getVersionInfo(void * const,class WebCore::String const &)" ([email protected]@@[email protected]@[email protected]@Z) 
1>QtWebKit.lib(PluginPackageWin.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function "private: bool __thiscall WebCore::PluginPackage::fetchInfo(void)" ([email protected]@[email protected]@AAE_NXZ) 
1>QtWebKit.lib(PluginPackageWin.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function "private: bool __thiscall WebCore::PluginPackage::fetchInfo(void)" ([email protected]@[email protected]@AAE_NXZ) 
1>QtWebKit.lib(PluginDatabaseWin.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function "class WebCore::String __cdecl WebCore::safariPluginsDirectory(void)" ([email protected]@@[email protected]@XZ) 
1>QtWebKit.lib(PluginDatabaseWin.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function "void __cdecl WebCore::addWindowsMediaPlayerPluginDirectory(class WTF::Vector &)" ([email protected]@@[email protected]@[email protected]@[email protected]@[email protected]@@Z) 
1>QtWebKit.lib(PluginDatabaseWin.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function "void __cdecl WebCore::addMacromediaPluginDirectories(class WTF::Vector &)" ([email protected]@@[email protected]@[email protected]@[email protected]@[email protected]@@Z) 
1>C:\Users\Geeko\Desktop\Qt\TestQ\Release\TestQ.exe : fatal error LNK1120: 6 unresolved externals 

我需要在Qt工程选项检查一番:

C:\Qt\4.6.2>configure -release -static -opensource -no-fast -no-exceptions -no-accessibility -no-rtti -no-stl -no-opengl -no-openvg -no-incredibuild-xge -no-style-plastique -no-style-cleanlooks -no-style-motif -no-style-cde -no-style-windowsce -no-style-windowsmobile -no-style-s60 -no-gif -no-libpng -no-libtiff -no-libjpeg -no-libmng -no-qt3support -no-mmx -no-3dnow -no-sse -no-sse2 -no-iwmmxt -no-openssl -no-dbus -platform win32-msvc2008 -arch windows -no-phonon -no-phonon-backend -no-multimedia -no-audio-backend -no-script -no-scripttools -webkit -no-declarative 

但是,我只要构建静态链接到QWebKit项目得到这些错误?我有QtCore,QtGui,网络和WebKit检查。

+0

来吧!没有答案也没有评论! – geeko 2010-03-28 10:35:53

+0

配置Qt进行编译时,是否需要包含多媒体/声子模块或gif/jpeg/... etc库? – geeko 2010-03-29 05:47:48

回答

4

它看起来像你需要在Windows .lib文件链接为每个缺少的功能:

VerQueryValue,GetFileVersionInfo - > version.lib

GetFileVersionInfoSize - > Coredll.lib

PathRemoveFileSpec,SHGetValue,PathCombine - > shlwapi.lib

如果您正在使用的qmake,您可以添加: LIBS + = -lversion -lCoredll -lshlwapi

否则:从项目菜单中选择属性。打开配置属性 - >链接器 - >输入。在Additional Dependencies字段中,添加version.lib,Coredll.lib和shlwapi.lib

+0

其实我只做了version.lib&shlwapi.lib,它工作!虽然,你实际上去了Librarian而不是Linker的配置。但是,有一件事情没有奏效:图片/视频不显示在网页控制中! – geeko 2010-04-08 10:15:46

+0

@geeko:这听起来像Qt不加载插件。由于您正在静态编译Qt,因此您需要执行一些额外的步骤才能使静态插件正常工作。查看静态插件上的Qt文档: http://qt.nokia.com/doc/4.6/plugins-howto.html#static-plugins – 2010-04-08 17:14:50

+0

我实际上使用MSVC2008,所以有没有办法通过.pro档案? – geeko 2010-04-09 19:02:45