Qt 4.8.2 VS2008 集成环境搭建过程中编译异常的解决方法

Qt 4.8.2 VS2008 集成环境搭建过程中编译错误的解决办法
Qt 4.8.2之VS2008集成环境搭建,本文主要介绍编译错误如何解决:

准备工作:

1.VS2008

2.qt-vs-addin-1.1.14.exe

3.qt-win-opensource-4.8.2-vs2008.exe

安装过程:

1.安装VS2008

2.安装qt-win-opensource-4.8.2-vs2008.exe

3.安装qt-vs-addin-1.1.14.exe

4.配置QT环境变量,控制面板->系统->高级->环境变量,在“系统变量”这个组合框中,找到“Path”变量,在"Path"的最后面添加

    "D:\Qt\4.8.2\bin\"

5.开始 -> 程序 -> Microsoft Visual Studio 2008 -> Visual Studio Tools ->Visual Studio 2008 命令提示

6.在命令行中键入:

    cd D:\Qt\4.8.2
    configure -platform win32-msvc2008 -debug-and-release  
    nmake

(1)错误信息:

01.api/qscriptextensionplugin.h(43): Error: Undefined interface
02.NMAKE : fatal error U1077: 'C:/Qt/2009.05/qt/bin/moc.exe' : return code '0x1'
03.Stop.
04.NMAKE : fatal error U1077: '"d:/Program Files/Microsoft Visual Studio 9.0/VC/BIN
05./nmake.exe"' : return code '0x2'
06.Stop.
07.NMAKE : fatal error U1077: 'cd' : return code '0x2'
08.Stop.
api/qscriptextensionplugin.h(43): Error: Undefined interface
NMAKE : fatal error U1077: 'C:/Qt/2009.05/qt/bin/moc.exe' : return code '0x1'
Stop.
NMAKE : fatal error U1077: '"d:/Program Files/Microsoft Visual Studio 9.0/VC/BIN
/nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'cd' : return code '0x2'
Stop.

解决方法:

qt/src/script/tmp/moc/debug_shared/mocinclude.tmp
qt/src/script/tmp/moc/release_shared/mocinclude.tmp

删除,然后继续编译。

(2)webkit部分的错误信息:

D:/tools/Qt/2010.05/qt/src/3rdparty/webkit/WebCore/tmp/moc/debug_shared/moc_Sock
etStreamHandlePrivate.cpp(97) : error C2065: “QSslError”: 未声明的标识符
D:/tools/Qt/2010.05/qt/src/3rdparty/webkit/WebCore/tmp/moc/debug_shared/moc_Sock
etStreamHandlePrivate.cpp(97) : error C3861: “socketSslErrors”: 找不到标识符
正在生成代码...
NMAKE : fatal error U1077: “"D:/tools/Microsoft Visual Studio 10.0/VC/BIN/cl.EX
E"”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “"D:/tools/Microsoft Visual Studio 10.0/VC/BIN/nmake
.exe"”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “cd”: 返回代码“0x2”
Stop.

解决方法:

qt/src/3rdparty/webkit/WebCore/tmp/moc/debug_shared/mocinclude.tmp
qt/src/3rdparty/webkit/WebCore/tmp/moc/release_shared/mocinclude.tmp
删除之后继续编译

(3)遇到错误:

platform\DefaultLocalizationStrategy.cpp(327):error C2001:常量中有换行符
platform\DefaultLocalizationStrategy.cpp(327):fatal error C1057:宏扩展中遇到意外的文件结束
NMAKE:fatal error U1077:"...(路径)\MSVS10.0\VC\BIN\cl.EXE":返回代码"0x2"
Stop.NMAKE:fatal error U1077:"...(路径)\MSVS10.0\VC\BIN\nmake.EXE":返回代码"0x2"
Stop.NMAKE:fatal error U1077:"cd":返回代码"0x2"
Stop.NMAKE:fatal error U1077:"cd":返回代码"0x2"Stop.

解决方法:
修改 src\3rdparty\webkit\Source\WebCore\platform下的DefaultLocalizationStrategy.cpp,定位到327行,将本行
return WEB_UI_STRING("Look Up "<selection>"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));
替换成
return WEB_UI_STRING("Look Up \"<selection>\"", "Look Up context menu item with selected word").replace("<selection>", truncatedStringForLookupMenuItem(selectedString));
并注意把那些看起来很特别的双引号改成正常的双引号!!!

重新执行nmake命令,ok。

7.配置qt-vs-addin,

把D:\Qt\4.8.2下的.qmake.cache和configure.cache这两个文件手动备份到另一个地方。然后输入指令:nmake confclean 指令完成后将会减少一些不再需要的文件。这个时候再把刚备份的.qmake.cache和configure.cache拷回原处。这时候最好把编译后的一堆东西打个包备个份,免得下次又要编译几个小时。

8.打开VS2008,菜单栏会多出一个Qt选项,选择Qt选项下的Qt Options,在Qt Versions中添加路径,点击Add,选择路径D:\Qt\4.8.2,OK。

9.打开VS2008,工具 -> 选项 -> 项目和解决方案  -> VC++目录中

在“包含文件”中加入D:\Qt\4.8.2\include

在“库文件”中加入 D:\Qt\4.8.2\lib

在可执行文件中添加D:\Qt\4.8.2\bin

visual assist设置

打开visual assist设置面板,选择project- >C/C++ Directories 将Platform选择为Custom,然后分别在stable include files 和src files中加入qt的include和src目录,重启VisualStudio

后续

现在已经能够在VS2008中编译运行Qt4程序了,如果想自己在命令行中编译运行,需要运行Qt4的命令行控制台开始----所有程序----Qt by Nokia v4.8.2 (VS2008 OpenSource)---- Qt 4.8.2 Command Prompt

这样会自动设置好Qt4和VC编译器的环境变量,不然编译会出现错误