在做OpenGL开发的时候,都会选择一种图形库,因为OpenGL本身只提供三维图形接口,不具备绘制窗口、接受响应、处理消息等功能,我们学习OpenGL的阶段,最常用的图形库就是GLUT了,因为其简单易学跨平台,美中不足的是Mark Kilgard在SGI写的官方版本并不开源,不过种平台上都有兼容的产品,所以不用担心。
由于OpenGL的简单性,不适合真正开发复杂的应用,不过并不是说GLUT在这种情景下就毫无用武之地,同样由于其简单性,有经验的程序员一般先用GLUT理顺3D图形代码,然后再用复杂高级的图形库集成为完整的应用程序。复杂高级的图形库包括QT,MFC等。
GLUT的安装也非常简单,只需要去官网下载库和头件,放到相应的位置就可以了,网上搜下就有了。
而QT的安装就比较麻烦了。。
下面就开始本文的主题,讲下如何将QT集成到vs2005中。
我在安装的时候,也在网上搜了一些教程,发现其中有的教程比较坑爹,连自己需要安装什么都不清楚。
下面说明下网上经常混淆的两个东东,在安装的时候,有的人说要下SDK,有的说下源码包,那这两个有什么区别呢。SDK是nokia提供的一套开发工具解决方案,里面有qt的开发库,qt的开发IDE-Qt Creator,qt的其它开发工具,Symbian手机模拟器,Qt Mobility,Remote compilers等等一堆乱七八糟的东西,SDK自身就是一个完整的开发环境,而我们需要的只是开发库,是把qt集成到vs2005中,我们不想要nokia的那套开发工具,可见让人下SDK的教程的是多么坑人。。。(最新版的SDK1.2.1有1.7G,最新可以下载的源码包v4.8.1只有200多M)
另外,如果你在windows系统用的是vs2008或vs2010,或者用的是minGW这套编译系统(相对于vc)就没有必要从源码开始编译开发库了,官方提供相应的编译好的库,直接去下载,然后配置下环境就可以了;GNU/Linux和MAC系统也提供编好的库。vs2005就要自己编了,如果你用的是vs2005,不想升级也不想自己花时间编,也可以,去网卡找别人编译好的下下来用,不过这种第三方编的库安全性和性能就有待商榷,use at your own risk.
如果你想编译的话就继续往下看吧^_^
首先说下我用的环境:
操作系统:win7
IDE:vs2005
QT版本:qt-everywhere-opensource-src-4.8.1
nokia 提供的qt相关软件下载的ftp站点:
ftp://ftp.qt.nokia.com/
打开后进入 qt/source/ 目录下下载最新的源码,目前提供的是4.8.1 qt-everywhere-opensource-src-4.8.1
解压到到任意的目录下面,比如说D:\Qt\4.8.1
安装perl,4.8.0以上的版本在configure时需要perl的支持,可以去这里下载http://www.activestate.com/activeperl
添加系统环境变量
QTDIR=D:\Qt\4.8.1
QMAKESPEC=win32-msvc2005
注:如果是vs2008话改成win32-msvc2008
在PATH里添加%QTDIR%\bin
打开VS2005命令提示窗口(开始菜单-Microsoft Visual Studio 2005-Visual Studio Tools-Visual Studio 2005 Command Prompt)
在VS2005命令提示窗口(系统的命令窗口不行)下切换到目录:D:\Qt\4.8.1
输入命令行: configure -debug-and-release -opensource -platform win32-msvc2005
提示是否接收license的时候输入y
10分钟左右的样子就configure完成了
经常在Linux下编译安装软件的同学对这一步肯定非常熟悉喽。它的作用就是根据当前系统的具体环境生成一个makefile文件,供之后make用。
注:configure 后面的参数可以根据自己的需要来做调整,去掉不需要的东西,精简系统,减少make编译时间。参数说明可以看官方文档 http://doc.qt.nokia.com/4.7-snapshot/configure-options.html 或者configure –help
configure完成之后就要make了,这是一个漫长的过程。
make步骤有两个选择,一是继续输入nmake,二是通过并行编译版的nmake——jom来编译。
关于jom的介绍可以看这里,http://labs.qt.nokia.com/2009/03/27/speeding-up-visual-c-qt-builds/, 有人写了并行版的nmake,可以让多核cpu来所有的cpu资源都利用起来,加快编译速度。ftp://ftp.qt.nokia.com/jom/ 这里下载最新的jom,然后解压到一个位置,比如说 D:\Qt\jom,然后在make步骤就可以这样..\jom\jom.exe -j N,这里的N是cpu个数。
我用nmake编的时候出错了,后来重新configure了一份,用jom来编,N为4,没有错误,用了不到两个小时的时间。
nmake在编译的时候有几个错误,网上给了解决方法,这里也整理过来
错误1
[code lang=”text”]
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.
[/code]
解决方法如下:
将以下两个目录下的这两个文件删除
qt/src/script/tmp/moc/debug_shared/mocinclude.tmp
qt/src/script/tmp/moc/release_shared/mocinclude.tmp
然后继续编译。
错误2
类似于下面这个错误
[code lang=”text”]
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.
[/code]
qt\src\3rdparty\webkit\WebCore\tmp\moc\debug_shared\mocinclude.tmp
qt\src\3rdparty\webkit\WebCore\tmp\moc\release_shared\mocinclude.tmp
删除之后可以继续编译(重新执行nmake命令)。
错误3
[code lang=”text”]
DefaultLocalizationStrategy.cpp(327) : “error C2001: newline in constant” in building 4.8.0
[/code]
将系统区域设置成为“英国”。具体方法:控制面板->时钟、语言和区域->更改位置->管理(标签)->更改系统区域设置…->英语(美国)。然后确定,然后重启电脑。重启后继续编译(nmake命令)。
编译好之后就可以去官网下载qt-vs-addin安装,装完之后,打开VS2005/VS2008,在菜单栏会多出一项”Qt”,选择”Qt”->”Qt Options”,在弹出窗口的Qt Versions中点”Add”添加Path(如D:\Qt\4.8.1),Version Name随便,然后点击Add添加。
这样在新建项目里就会看到像Qt的assistant、designer、linguist、qtdemo等的项目可选了。
我装的是qt-vs-addin-1.1.9.exe,最新的版本装上会报错-_-
报的错官网有一个解决方法
https://bugreports.qt-project.org/browse/QTVSADDINBUG-62?focusedCommentId=146964&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel
After qt-vs-addin is installed, I can’t create any qt project.
I find some dlls that are not registered.
So I registered these dlls:
cd C:\Program Files\Nokia\Qt4VSAddin
regsvr32 qmakewrapper1.dll
cd C:\Program Files\Nokia\Qt4VSAddin\9.0
regasm /codebase Qt4VSAddin.dll
regasm /codebase QtProjectEngineLib.dll
regasm /codebase QtProjectLib.dll
可是我试了之后并不成功。。。。
在这里也一起收集过来
到这里就完喽