静态编译Qt 4.6.2

时间:2010-03-17 11:30:51

标签: qt static linker compilation

这就是我所做的,但它会导致错误:

1:在win32-msvc2008 \ qmake.conf中我设置QMAKE_CFLAGS_RELEASE = -O1 -Og -GL -MD

2:从MSVC2008 CMD开始,我运行vcvarsall.bat x86vcvars32.bat "C:\Program Files\Microsoft Visual Studio 9.0\VC\bin

3:从Qt 4.6.2 CMD我运行以下

  

C:\ Qt \ 4.6.2> configure -release   -nomake examples -nomake demos -no-exceptions -n o-stl -no-rtti -no-qt3support -no-scripttools -no-openssl -no-opengl -no-webkit   -no-phonon -no-style-motif -no-style-cde -no-style-cleanlooks -no-style-plastique   -no-sql-sqlite -platform win32-msvc2008 -static -qt-libjpeg   -qt-zlib -qt-libpng

然后nmake

然而,我每次都遇到这些错误:

    link /LIBPATH:"c:\Qt\4.6.2\lib"
     

/ LIBPATH:“c:\ Qt \ 4.6.2 \ lib”/ NOLOGO   / INCR EMENTAL:NO / MANIFEST   /MANIFESTFILE:"tmp\obj\release_static\assistant_adp.interme   diate.manifest“/ SUBSYSTEM:WINDOWS   “/ MANIFESTDEPENDENCY:类型= '的win32'   名字=“微   soft.Windows.Common - 控制   版本= '6.0.0.0'   publicKeyToken ='6595b64144ccf1df'   语言= ''   ProcessorArchitecture用于= ''”   /OUT:......\bin\assistant_adp.exe @C   :\ DOCUME〜1个\ Geeko \ LOCALS〜1个\ TEMP \ nm3F8.tmp   fontpanel.obj:MSIL .netmodule或   用/ GL编译的模块;   用/ LTCG重启li nk;添加/ LTCG   到链接命令行来改进   链接器性能main.obj:错误   LNK2001:未解析的外部符号   “class QObject * __cdecl qt   _plugin_instance_qjpeg(void)“(?qt_plugin_instance_qjpeg @@ YAPAVQObject @@ XZ)   ...... \ bin \ assistant_adp.exe:致命   错误LNK1120:1个未解析的外部

     

NMAKE:致命错误U1077:   '“C:\ Program Files \ Microsoft Visual   Studio 9.0 \ VC \ BIN \ link.EXE“':返回   代码'0x460'停止。

     

NMAKE:致命错误U1077:'“C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ BIN \ nmake.exe”':返回代码'0x2'停止。

     

NMAKE:致命错误U1077:'cd':返回代码'0x2'停止。

     

NMAKE:致命错误U1077:'cd':返回代码'0x2'停止。

     

NMAKE:致命错误U1077:'cd':返回代码'0x2'停止。

谢谢你。

3 个答案:

答案 0 :(得分:1)

我尝试用MS VS 2008做到这一点并且有效。

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的项目时,我遇到了这些错误:

1>创建库C:\ Users \ Geeko \ Desktop \ Qt \ TestQ \ Release \ TestQ.lib和对象C:\ Users \ Geeko \ Desktop \ Qt \ TestQ \ Release \ TestQ.exp

1> QtWebKit.lib(PluginPackageWin.obj):错误LNK2019:未解析的外部符号_VerQueryValueW @ 16在函数“类WebCore :: String __cdecl WebCore :: getVersionInfo中引用(void * const,类WebCore :: String const& )“(?getVersionInfo @ WebCore @@ YA?AVString @ 1 @ QAXABV21 @@ Z)

1> QtWebKit.lib(PluginPackageWin.obj):错误LNK2019:未解析的外部符号_GetFileVersionInfoW @ 16在函数“private:bool __thiscall WebCore :: PluginPackage :: fetchInfo(void)”中引用(?fetchInfo @ PluginPackage @ WebCore @ @AAE_NXZ)

1> QtWebKit.lib(PluginPackageWin.obj):错误LNK2019:未解析的外部符号_GetFileVersionInfoSizeW @ 8在函数“private:bool __thiscall WebCore :: PluginPackage :: fetchInfo(void)”中引用(?fetchInfo @ PluginPackage @ WebCore @ @AAE_NXZ)

1> QtWebKit.lib(PluginDatabaseWin.obj):错误LNK2019:未解析的外部符号__imp__PathRemoveFileSpecW @ 4在函数“class WebCore :: String __cdecl WebCore :: safariPluginsDirectory(void)”中引用(?safariPluginsDirectory @ WebCore @@ YA? AVString @ 1 @ XZ)

1> QtWebKit.lib(PluginDatabaseWin.obj):错误LNK2019:函数“void __cdecl WebCore :: addWindowsMediaPlayerPluginDirectory(类WTF :: Vector&)”中引用了未解析的外部符号__imp__SHGetValueW @ 24(?addWindowsMediaPlayerPluginDirectory @ WebCore @@ YAXAAV?$矢量@ VString @ @@ WebCore的$ 0A @@ WTF @@@ Z)

1> QtWebKit.lib(PluginDatabaseWin.obj):错误LNK2019:函数“void __cdecl WebCore :: addMacromediaPluginDirectories(类WTF :: Vector&)”中引用了未解析的外部符号__imp__PathCombineW @ 12(?addMacromediaPluginDirectories @ WebCore @@ YAXAAV?$矢量@ VString @ @@ WebCore的$ 0A @@ WTF @@@ Z)

1> C:\ Users \ Geeko \ Desktop \ Qt \ TestQ \ Release \ TestQ.exe:致命错误LNK1120:6个未解析的外部

我是否需要检查Qt项目选项中的内容? 我检查了QtCore,QtGui,Network和WebKit。

答案 1 :(得分:0)

尝试设置这些环境变量:

  • QTDIR:c:\ Qt \ 4.6.2或解压缩Qt来源的任何地方。
  • QMAKESPEC:win32-msvc2008
  • %QTDIR%/binPATH

使用'Visual Studio 2008命令提示符'(在VS2008的“工具”菜单中)代替Qt。

答案 2 :(得分:0)

您是否考虑过Qt选择默认值的std :: string类型?

这是一个小编译器开关 -Zc:wchar_t - ,它明确地将wchar_t定义为unsigned short而不是内置类型。 如果您在最后省略 - ,即 -Zc:wchar_t ,它会更改,并且可能与您的项目更兼容。

相关问题