2010-03-27 38 views
5

Intenté compilar Qt + Webkit estáticamente con MS VS 2008 y funcionó.compilando estáticamente QWebKit 4.6.2

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 

Sin embargo, consigo estos errores cada vez que la construcción de un proyecto que vincula estáticamente a QWebKit:

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 

¿Es necesario comprobar algo en las opciones del proyecto Qt? Tengo QtCore, QtGui, Network y WebKit marcados.

+0

¡Vamos gurús! sin respuestas ni comentarios !! – geeko

+0

¿Debo incluir los módulos multimedia/Phonon o las bibliotecas gif/jpeg/... etc al configurar Qt para la compilación? – geeko

Respuesta

4

Parece que es necesario enlazar los archivos en las ventanas .lib para cada una de las funciones que faltan:

VerQueryValue, GetFileVersionInfo -> version.lib

GetFileVersionInfoSize -> Coredll.lib

PathRemoveFileSpec, SHGetValue, PathCombine -> shlwapi.lib

Si está utilizando qmake, se agrega: LIBS + = -lversion -lCoredll -lshlwapi

De lo contrario: en el menú Proyecto, elija Propiedades. Abrir propiedades de configuración-> Enlazador-> Entrada. En el campo Dependencias adicionales, agregue version.lib, Coredll.lib y shlwapi.lib

+0

¡En realidad solo lo hice para version.lib y shlwapi.lib y funcionó! Sin embargo, en realidad vas a Bibliotecario en lugar de la configuración de Linker. Sin embargo, una cosa NO funcionó: las imágenes/videos no se muestran en el control web?! – geeko

+0

@geeko: parece que Qt no está cargando complementos. Dado que está compilando estáticamente Qt, debe realizar algunos pasos adicionales para que funcionen los complementos estáticos. Consulte los documentos de Qt sobre los complementos estáticos: http://qt.nokia.com/doc/4.6/plugins-howto.html#static-plugins –

+0

De hecho, estoy usando MSVC2008, así que hay una forma de hacerlo sin pasar por .pro archivos? – geeko