2010-03-27 14 views
5

J'ai essayé de compiler Qt + Webkit statiquement avec MS VS 2008 et cela a fonctionné.Compilation statique 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 

Cependant, je reçois ces erreurs à chaque fois que la construction d'un projet qui relie statiquement à 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 &)" (?addWindowsMediaPl[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 

Ai-je besoin de vérifier quelque chose dans les options du projet Qt? QtCore, QtGui, Network et WebKit sont vérifiés.

+0

Allez les gourous! pas de réponses ni de commentaires !! – geeko

+0

Dois-je inclure les modules multimédia/Phonon ou les bibliothèques gif/jpeg/... etc lors de la configuration de Qt pour la compilation? – geeko

Répondre

4

Il semble que vous devez lier dans les fichiers de Windows pour chacune des fonctions manquantes:

VerQueryValue, GetFileVersionInfo -> version.lib

GetFileVersionInfoSize -> Coredll.lib

PathRemoveFileSpec, SHGetValue, PathCombine -> shlwapi.lib

Si vous utilisez qmake, vous ajoutez: LIBS + = -lversion -lCoredll -lshlwapi

Sinon: Dans le menu Projet, choisissez Propriétés. Ouvrez Configuration Properties-> Linker-> Input. Dans le champ Dépendances supplémentaires, ajoutez version.lib, Coredll.lib et shlwapi.lib

+0

En fait, je l'ai seulement fait pour version.lib & shlwapi.lib et ça a marché! Cependant, vous allez en fait au bibliothécaire au lieu de la configuration de Linker. Cependant, une chose n'a pas fonctionné: les images/vidéos n'apparaissent pas dans le contrôle web?! – geeko

+0

@geeko: il semble que Qt ne charge pas les plugins. Puisque vous compilez de façon statique Qt, vous devez effectuer des étapes supplémentaires pour que les plugins statiques fonctionnent. Voir les documents Qt sur les plugins statiques: http://qt.nokia.com/doc/4.6/plugins-howto.html#static-plugins –

+0

Je suis en train d'utiliser MSVC2008, donc y a-t-il un moyen sans passer par .pro des dossiers ? – geeko