编译Qt库以与Visual Studio 2008一起运行,为什么nmake会失败?

时间:2009-08-12 22:10:22

标签: visual-studio visual-studio-2008 qt

我正在尝试让我的Visual Studio Qt插件工作,所以要重新编译Qt库,我从VS命令提示符运行以下命令:

c:\*Qtfolder*>configure -platform -win32-msvc2008

在此之后,我运行了nmake并开始编译过程。由于链接错误,它在中止前大约需要45分钟。我从QNetworkReplyHandler.obj和FrameLoaderClientQt.obj得到了总共八个“未解决的外部符号”错误。这些都不是我需要的库,但由于它们的错误,编译正在中止。当它中止其余的库似乎差不多完成了,实际上我甚至可以在Visual Studio中加载和编译我的Qt项目,它们只是运行错误,因为很可能并非所有的库都被编译。有没有人碰到这个或者可能知道为什么nmake失败了?

似乎我可以告诉编译器尽管存在错误仍然继续,或者省略可能有用的有问题的库。 Qt的配置有很多选项,但是我找不到任何我需要的东西,不幸的是我找不到Qt的配置选项的在线参考,谷歌搜索提出的一切都是针对某些人的“Qtopia”原因。

这是最后一个错误。还有七个基本上完全相同的错误,只是针对不同的符号

FrameLoaderClientQt.obj : error LNK2019: unresolved external symbol "protected:
void __thiscall QWebPage::downloadRequested(class QNetworkRequest const &)" (?do
wnloadRequested@QWebPage@@IAEXABVQNetworkRequest@@@Z) referenced in function "pu
blic: virtual void __thiscall WebCore::FrameLoaderClientQt::startDownload(struct
 WebCore::ResourceRequest const &)" (?startDownload@FrameLoaderClientQt@WebCore@
@UAEXABUResourceRequest@2@@Z)
..\..\..\..\lib\QtWebKitd4.dll : fatal error LNK1120: 8 unresolved externals
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
\link.EXE"' : return code '0x460'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.

3 个答案:

答案 0 :(得分:4)

显然,您可以通过删除mocinclude.tmpsrc/3rdparty/webkit/WebCore/tmp/moc/{debug,release}_shared的两个实例来解决此特定错误。 (Source)。

顺便说一下,当你运行configure时,你可以向它传递一个'help'参数来获得它理解的参数列表(即configure help)。

答案 1 :(得分:2)

不确定这是否有帮助,但这里是我用于在Vista上为Visual Studio Express 2008成功构建Qt 4.5的配置选项:

  

C:\ Qt的\ 2009.01 \配置   -no-sql-sqlite -no-qt3support -no-opengl -platform win32-msvc2008 -no-libtiff -no-dbus -no-phonon -no-phonon-backend -no-webkit

我从Qt 4.5 with Visual Studio 2008 (VC++ Express) HowTo得到了这个。

请务必遵循其中的所有说明,以便在VS中构建示例。

答案 2 :(得分:1)

我在阅读了richardwb的回答之后浏览了Qt论坛,发现another proposed solution使用-no-webkit选项运行configure以跳过违规库。最终的configure命令看起来像这样

configure -no-webkit -platform win32-msvc2008

我将尝试这个和richardwb的解决方案,并在我完成后更新