lansh

首页 新随笔 联系 订阅 管理
  85 Posts :: 1 Stories :: 91 Comments :: 2 Trackbacks
1.正常安装Visual Studio 2005,只要安装了C++即可.
注意:不是Express版本.

2.下载Qt源代码

Qt 4.3.2 Windows OpenSource版下载:
http://www.qtcn.org/download/qt-win-opensource-src-4.3.2.zip
ftp://ftp.trolltech.com/qt/source/qt-win-opensource-src-4.3.2.zip

3.解压代码
目录结构建议:
C:\Qt\4.3\            (<-- 打算用其他编译环境)
C:\Qt\4.3-msvc2005\   (<-- 如过你打算用Visual Studio 2005)
注意:目录中间不要有空格,据说后面编译会出问题.

4.编译源代码
通过"开始"菜单 -> "Microsoft Visual Studio 2005" -> "Visual Studio Tools", 运行命令行.
下面是检查运行环境是否正确的方法,就是运行nmake命令
D:\Qt\4.3.2-msvc2005> nmake /?

Microsoft (R) Program Maintenance Utility Version 8.00.50727.42
Copyright (C) Microsoft Corporation.  All rights reserved.

Usage:  NMAKE @commandfile
        NMAKE [options] [/f makefile] [/x stderrfile] [macrodefs] [targets]

Options:

....
这个版本需要打acs-4.3.x-patch3.zip就可以编译了.
配置编译的命令行:
D:\Qt\4.3.2-msvc2005>configure -no-stl -no-dsp -vcproj

编译过程中,会问一个问题:
是否接受GPL协议,选'y'.

经过一段时间以后,qmake被编译出来了.

接着编译一大堆代码,简单的敲入nmake即可.
这里,我花掉了两个多小时.

5.配置环境变量
好像主要为了在命令行的时候使用.
在"我的电脑"上单击右键,进入"属性",然后打开"环境变量"对话框.
在PATH环境变量中添加:"D:\Qt\4.3.2-msvc2005\bin".
添加新的环境变量,名字为"QMAKESPEC",值为"win32-msvc2005".

6.安装Visual Studio的插件
 在网上下载Qt Visual Studio Integration v1.2.2 for.VS.2003.2005.exe,安装之.
安装的时候,用户名任意,注册码为下列值之一:
FGJ7UGX-WQPWJ6X-F4M-UG6ZQC-2G8N2G-6AYP3G-864F
FGJ58F-HQGNCCM-F4M-BVY8ELX-8KG9WT-NU5JAQ-6C21
FGBBY3M-WYYUFN9-F4M-GWEVVS9-WTKP39X-UKJUUDM-EE0D
FGM9UXX-PJ8CRVX-F4M-UQDJFQ9-PXHXTQ-BZF46Y9-694B

7.配置Visual Studio 2005.

"Tools" -> "Options" -> "Qt" -> "Builds", 添加我们刚才编译的Qt代码,名字为"Qt 4.3.2", 路径为"D:\Qt\4.3.2-msvc2005".

8.如果安装Visual Assist的话,需要配置一下,才有代码提示功能.
"VAssistX" -> "Visual Assist X Options ..." -> "Projects", 在"Platform"里面把"Win32"改为"Custom",
在"Stable include files"末尾添加"D:\Qt\4.3.2-msvc2005\include".

9.写一个小的测试用例吧.
启动一个新的工程.
选择"Qt projects" -> "Qt Application"类型,输入工程名字,单击OK.

一路Next,最后Finish.

双击工程文件里面的"test.ui",马上出现了所见及所得的窗体编辑器,在上面添加一个按钮.


双击按钮,产生相应的消息响应函数.
添加头文件:
#include <QMessageBox>

在函数void Test::on_pushButton_clicked()体内添加如下代码:
    QMessageBox box(this);
    box.setText("Haha, hit me.");
    box.exec();

编译运行工程,效果如下:




0
0
(请您对文章做出评价)
« 上一篇:CRC从原理到实现
» 下一篇:Qt在MSVC 6.0上编译~~
posted on 2007-11-08 01:54 lansh 阅读(11128) 评论(27)  编辑 收藏 网摘

Feedback

#1楼 2007-11-28 16:24 JQ123[未注册用户]
我在执行
D:\Qt\4.3.2-msvc2005>configure -no-stl -no-dsp -vcproj
这一句时,最后link时出错:
link
LINK : fatal error LNK1181: 无法打开输入文件“link.obj”
NMAKE : fatal error U1077: “"D:\Program Files\Microsoft Visual Studio 8\VC\BIN\link.EXE"”: 返回代码“0x49d”
Stop.
请问是怎么回事?

  回复  引用    

#2楼[楼主] 2007-11-28 21:19 lansh      
--引用--------------------------------------------------
JQ123: 我在执行
D:\Qt\4.3.2-msvc2005&gt;configure -no-stl -no-dsp -vcproj
这一句时,最后link时出错:
link
LINK : fatal error LNK1181: 无法打开输入文件“link.obj”
NMAKE : fatal error U1077: “&quot;D:\Program Files\Microsoft Visual Studio 8\VC\BIN\link.EXE&quot;”: 返回代码“0x49d”
Stop.
请问是怎么回事?
--------------------------------------------------------
你删除掉所有的文件,重新减压,再运行上面的命令,看看如何。
还有,你的VS2005的环境变量设置对不对?按照道理,确实没有link.obj这个文件呀?

要不你把最后一屏贴上来,让我看看。

  回复  引用  查看    

#3楼 2007-11-29 09:59 JQ123[未注册用户]
@lansh
我又删了重来一遍,还是不行。我VS2005的环境变量应该没问题的,前面编译都过了,只是link时出

错。而我手动执行最后的link命令时居然把qmake编出来了-_-!但makefile还是不能生成:(

最后一屏的内容:
link -DEBUG -OUT:qmake.exe project.obj main.obj makefile.obj unixmake.obj unixmake2.obj

mingw_make.obj option.obj winmakefile.obj projectgenerator.obj property.obj meta.obj

makefiledeps.obj metamakefile.obj xmloutput.obj pbuilder_pbx.obj borland_bmake.obj

msvc_nmake.obj msvc_dsp.obj msvc_vcproj.obj msvc_objectmodel.obj qbitarray.obj

qbuffer.obj qcryptographichash.obj qfsfileengine.obj qfsfileengine_iterator.obj

qbytearray.obj qvsnprintf.obj qbytearraymatcher.obj qdatetime.obj qdir.obj

qdiriterator.obj qfile.obj qtemporaryfile.obj qabstractfileengine.obj

qfsfileengine_win.obj qfsfileengine_iterator_win.obj qfileinfo.obj qglobal.obj

qhash.obj qiodevice.obj qlistdata.obj qlinkedlist.obj qlocale.obj qmap.obj

qregexp.obj qstring.obj qstringlist.obj qtextstream.obj qdatastream.obj quuid.obj

qvector.obj qsettings.obj qlibraryinfo.obj qvariant.obj qurl.obj qsettings_win.obj

qmetatype.obj qnumeric.obj qscriptasm.obj qscriptast.obj qscriptastvisitor.obj

qscriptcompiler.obj qscriptecmaarray.obj qscriptecmaboolean.obj qscriptecmacore.obj

qscriptecmadate.obj qscriptecmafunction.obj qscriptecmaglobal.obj qscriptecmamath.obj

qscriptecmanumber.obj qscriptecmaobject.obj qscriptecmaregexp.obj

qscriptecmastring.obj qscriptecmaerror.obj qscriptcontext_p.obj qscriptengine.obj

qscriptengine_p.obj qscriptextenumeration.obj qscriptextvariant.obj

qscriptcontext.obj qscriptfunction.obj qscriptgrammar.obj qscriptlexer.obj

qscriptclassdata.obj qscriptparser.obj qscriptprettypretty.obj

qscriptsyntaxchecker.obj qscriptvalue.obj qscriptvalueimpl.obj

qscriptvalueiterator.obj ole32.lib advapi32.lib
Microsoft (R) Incremental Linker Version 8.00.50727.42
Copyright (C) Microsoft Corporation. All rights reserved.

link
LINK : fatal error LNK1181: 无法打开输入文件“link.obj”
NMAKE : fatal error U1077: “"D:\Program Files\Microsoft Visual Studio 8\VC\BIN\link.EXE"”: 返回代码“0x49d”
Stop.
Building qmake failed, return code 2

bz有空加我msn吧d_boy_jq@hotmail.com

  回复  引用    

#4楼 2007-11-29 11:03 JQ123[未注册用户]
看来真是vs环境问题了。我在另一台机器上成功编译了,thx any way:)
  回复  引用    

#5楼[楼主] 2007-11-29 13:05 lansh      
--引用--------------------------------------------------
JQ123: 看来真是vs环境问题了。我在另一台机器上成功编译了,thx any way:)
--------------------------------------------------------
呵呵,看来你只能重新安装VS2005了。

  回复  引用  查看    

#6楼 2008-01-08 23:12 真主[未注册用户]
看了要回一下
谢谢!!!

  回复  引用    

#7楼 2008-03-24 12:25 hi[未注册用户]
从所有程序,qt安装选项中的命令行打开vs2005就可了
  回复  引用    

#8楼 2008-04-04 12:08 玉龙[未注册用户]
虽然我正在安装,但安装起来如此的方便,我要说一句“谢谢楼主,这真一个好东西。”。
  回复  引用    

#9楼 2008-04-13 13:58 nicoleok[未注册用户]
请问 我在安装QT for VS2005 的插件的时候,安装进程总是停在中途,为什么?
  回复  引用    

#10楼 2008-04-13 17:53 FWP[未注册用户]
cl -c -Foproject.obj -W3 -nologo -O2 -I. -Igenerators -Igenerators\uni
x -Igenerators\win32 -Igenerators\mac -ID:\qt434win\src\corelib\arch\generic -
ID:\qt434win\include -ID:\qt434win\include\QtCore -ID:\qt434win\include -ID:\qt
434win\include\QtCore -ID:\qt434win\src\corelib\global -ID:\qt434win\include\Q
tScript -ID:\qt434win\mkspecs\win32-msvc2005 -DQT_NO_TEXTCODEC -DQT_NO_UNICOD
ETABLES -DQT_LITE_COMPONENT -DQT_NODLL -DQT_NO_STL -DQT_NO_COMPRESS -DUNICODE -
DHAVE_QCONFIG_CPP -DQT_BUILD_QMAKE -DQT_NO_THREAD -DQT_NO_QOBJECT -DQT_NO_GEOM_
VARIANT -DQT_NO_DATASTREAM -DQT_NO_PCRE /Zc:wchar_t- -DQMAKE_OPENSOURCE_EDITION
project.cpp
'cl' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
NMAKE : fatal error U1077: “cl”: 返回代码“0x1”
Stop.
Building qmake failed, return code 2
这怎么回事呀?configure时出的

  回复  引用    

#11楼 2008-04-13 19:08 FWP[未注册用户]
发觉自己傻了,忘了添加PATH了。
不过有个新的问题,每次编译到lib里的库文件时总会出错。然后重新NMAKE又过去了,相应的*.lib也生成了。不知道为什么?
mt.exe : general error c101008d: Failed to write the updated manifest to the res
ource of file "..\..\lib\QtScriptd4.dll". f。。。。就这情况,有乱码没办法完全复制所有的出错信息

  回复  引用    

照图施工,顺利完成! 谢谢
  回复  引用    

#13楼[楼主] 2008-04-21 09:20 lansh      
@nicoleok
--引用--------------
nicoleok: 请问 我在安装QT for VS2005 的插件的时候,安装进程总是停在中途,为什么?
--------------------
是不是VS2005安装的有问题?还是Qt插件下载的有问题?

  回复  引用  查看    

#14楼[楼主] 2008-04-21 09:22 lansh      
--引用----------
FWP: 发觉自己傻了,忘了添加PATH了。
不过有个新的问题,每次编译到lib里的库文件时总会出错。然后重新NMAKE又过去了,相应的*.lib也生成了。不知道为什么?
mt.exe : general error c101008d: Failed to write the updated manifest to the res
ource of file &quot;..\..\lib\QtScriptd4.dll&quot;. f。。。。就这情况,有乱码没办法完全复制所有的出错信息
-------------------
一旦出过错误,最好删除掉以前编译的临时文件,然后再彻底重新编译。

  回复  引用  查看    

#15楼 2008-07-08 18:44 cyd[未注册用户]
请问编译时出现下面问题是怎么回事呀?
1>Moc'ing test.h...
1>Qt meta object compiler
1>moc: Invalid argument
1>Usage: moc [options] <header-file>
1> -o file Write output to file rather than stdout
1> -i Do not generate an #include statement
1> -f[file] Force #include, optional file name
1> -p path Path prefix for included file
1> -k Do not stop on errors
1> -nw Do not display warnings
1> -v Display version of moc
1>Project : error PRJ0019: A tool returned an error code from "Moc'ing test.h..."
1>Build log was saved at "file://f:\mitk\mitktest\region grow\test\test\Debug\BuildLog.htm"
1>test - 1 error(s), 0 warning(s)

  回复  引用    

#16楼[楼主] 2008-07-24 20:05 lansh      
--引用--------------------------------------------------
cyd: 请问编译时出现下面问题是怎么回事呀?
<br>1&gt;Moc'ing test.h...
<br>1&gt;Qt meta object compiler
<br>1&gt;moc: Invalid argument
<br>1&gt;Usage: moc [options] &lt;header-file&gt;
<br>1&gt; -o file Write output to file rather than stdout
<br>1&gt; -i Do not generate an #include statement
<br>1&gt; -f[file] Force #include, optional file name
<br>1&gt; -p path Path prefix for included file
<br>1&gt; -k Do not stop on errors
<br>1&gt; -nw Do not display warnings
<br>1&gt; -v Display version of moc
<br>1&gt;Project : error PRJ0019: A tool returned an error code from &quot;Moc'ing test.h...&quot;
<br>1&gt;Build log was saved at &quot;file://f:\mitk\mitktest\region grow\test\test\Debug\BuildLog.htm&quot;
<br>1&gt;test - 1 error(s), 0 warning(s)
--------------------------------------------------------

不好意思,没有见过这种问题。你的工程是通过向导建立的吗?

  回复  引用  查看    

谢谢您的好文!
我在执行configure -no-stl -no-dsp -vcproj途中,突然结束。屏幕上显示
Generating makefiles...
execute: Unknown error
(-spec)
(win32-msvc2005)
(-r)
(c:/Qt/4.3-msvc2005/projects.pro)
(-o)
(c:/Qt/4.3-msvc2005)
Qmake failed, return code -1

请问这编译问题是怎么回事?可以如何解决?
(我安装的是vc2005专业版)
谢谢您!

  回复  引用    

#18楼 2008-08-22 19:46 lekaile[未注册用户]
QT for VS2005 的插件 哪里有下载阿 我怎么找不到呢 没有免费的阿 可以发一个么
  回复  引用    

#19楼[楼主] 2008-08-26 09:34 lansh      
网上应该有的,我也是在网上下的。你可以用电骡搜,我就是这样找到的。
  回复  引用  查看    

#20楼 2008-08-28 14:33 刘坤[未注册用户]
我在运行:D:\Qt\4.3.2-msvc2005>configure -no-stl -no-dsp -vcproj
的时候提示:
Found more than one Compiler ! using "Microsoft <32> 32-bit c/c++ Optimizing Compiler.net2005 <8.0>"
.......
.....

因为我机子里装了vs2003,2005,2008了,不知道怎么设置才能指定编译器呢?

  回复  引用    

我在利用向导生成方案的时候 ,建立一个工程 HelloQt,helloQt.h 头文件 自动生成 如下
#include <QtGui/QMainWindow>
#include "ui_testqt.h"

class TestQt : public QMainWindow
{
Q_OBJECT

public:
TestQt(QWidget *parent = 0, Qt::WFlags flags = 0);
~TestQt();

private:
Ui::TestQtClass ui;
};

#endif // TESTQT_H编译 “ui_testqt.h" 文件无法找到
Ui 非名称 空间 ,无类型 等一堆错误, 向导出现什么问题 ?
期待帮助

  回复  引用    

To 刘坤:
我也是装了N多VC版本,发现一样的错误,通过google再看帮助,发现可以用-platform 选项搞定,就是 configure -no-stl -no-dsp -vcproj -platform win32-msvc2005,试试看吧

  回复  引用    

#23楼 2008-11-16 13:53 lwl0810[未注册用户]
安装好之后用qt可以编译c++文件,但无法新建qt project,那一栏为空
  回复  引用    

#24楼 2008-12-07 20:50 puff[未注册用户]
整个过程没有提示错误!但是在安装Qt Visual Studio Integration v1.2.2 for.VS.2003.2005.exe时,提示没有安装QT 诡异!
  回复  引用    

我也碰到了同样的问题@puff

  回复  引用    

#26楼 2009-07-30 10:18 hwsxsf[未注册用户]
你好,我 设置环境变量

右击我的电脑->属性->高级->环境变量;

在系统变量中新建QTDIR变量,变量值D:\QT\4.4.3

新建QMAKESPEC变量,变量值win32-msvc2005

在PATH变量中填加:D:\QT\4.4.3\bin;
设置完变量后,
运行 qmake -t vcapp -win32 -o app_d.vcproj app.pro
出现错误 Could not find mkspecs for your QMAKESPEC(win32-msvc2005 ) after trying:
d:/Qt/2009.03/qt\mkspecs
Error processing project file: app.pro
这是什么原因呀?

  回复  引用    

#27楼 2009-07-31 10:47 hwsxsf[未注册用户]
你好,上述问题已经解决,我按照你写的步骤建立一个工程,为什么在generated files中moc_test2.cpp,ui_test2.h前面都有一个红点,编译的时候还会出现the project is out of date,出错等状况呢?
  回复  引用