问题及解决:
在进行Qt的qmake和vc的nmake时,后者发现找不到<stddef.h>文件。进行了一些尝试后没能解决,只是颠三倒四的在VC环境下下可以编译成功了。
今天又进行QT学习,仍然发现了这个问题,于是再搜搜。突然发现了这篇文档,很不错,如果当时能够发现,问题可能早就解决了。
其实就是:重新注册一下VC的环境变量,打开cmd控制台,进入D:\Program Files\Microsoft Visual Studio\VC98\Bin目录,运行VCVARS32.BAT。
注意的地方就是如果批处理中使用的是目录的简写program~1之类的,最好替换为真实完全路径,否则可能是因为安装的比较早,这个目录简写已经不适用了。
我是通过这个贴打开思路的:http://blog.sina.com.cn/s/blog_43ca06360100kbh0.html,表示感谢。
但后来又发现了这个贴更好:http://hi.baidu.com/shuiyuan2004/blog/item/da75d124ee2c7a054d088d64.html
附上原文进行感谢,并对早期准备不足、心理层次不够表示歉意。
唉,有时候虽然文档说的很好,但是自己看了几遍却仍然认识不到,没办法,过程嘛就是这样,下次注意。
附原文如下:
Qt4.3.4+VC++6.0在WINDOWS下安装配置
在进行Qt的qmake和vc的nmake时,后者发现找不到<stddef.h>文件。进行了一些尝试后没能解决,只是颠三倒四的在VC环境下下可以编译成功了。
今天又进行QT学习,仍然发现了这个问题,于是再搜搜。突然发现了这篇文档,很不错,如果当时能够发现,问题可能早就解决了。
其实就是:重新注册一下VC的环境变量,打开cmd控制台,进入D:\Program Files\Microsoft Visual Studio\VC98\Bin目录,运行VCVARS32.BAT。
注意的地方就是如果批处理中使用的是目录的简写program~1之类的,最好替换为真实完全路径,否则可能是因为安装的比较早,这个目录简写已经不适用了。
我是通过这个贴打开思路的:http://blog.sina.com.cn/s/blog_43ca06360100kbh0.html,表示感谢。
但后来又发现了这个贴更好:http://hi.baidu.com/shuiyuan2004/blog/item/da75d124ee2c7a054d088d64.html
附上原文进行感谢,并对早期准备不足、心理层次不够表示歉意。
唉,有时候虽然文档说的很好,但是自己看了几遍却仍然认识不到,没办法,过程嘛就是这样,下次注意。
附原文如下:
Qt4.3.4+VC++6.0在WINDOWS下安装配置
关于QT
Qt是一个多平台的C++图形用户界面应用程序框架。
它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。
Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。
自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。
----------------------------------------------------------------------------------
版本:qt-win-opensource-4.3.4-mingw.exe
或:qt-win-opensource-src-4.3.4.zip
exe版本,(安装时需要指定mingW的路径,没有的话,应该要点击下载到本地并安装,缺少的话不知道会不会有问题),点击下载安装mingW,非常的慢~
安装成功之后,还是需要进行编译,否则会缺少某些lib或dll文件。
1、安装。
点击安装,选好路径(如设为:D\:QT),点击下载mingw,然后是漫长的等待~
2、编译环境。
命令提示符,
D:
cd QT\4.3.4
configure
根据提示,输入nmake,然后又是漫长的等待~
3、设置环境变量。
QMAKESPEC = win32-msvc
QTDIR = D:\Qt\4.3.4
path = %QTDIR%\bin
这样,如果要修改QT的路径,只要改QTDIR的值就可以了。
至此,QT环境就安装好了。
4、测试
下面用一个小程序测试一下
创建文件名为hello.cpp,输入如下代码:
#include <QApplication>
#include <QLabel>
int main(int argc, char **argv) {
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello World!");
label->show();
return app.exec();
}
保存到某个空文件件中。
然后,打开命令提示符,进入hello.cpp的文件夹,运行:
qmake -project
qmake
nmake
就会在debug文件夹下生成一个.exe文件。
也可以使用qmake -t vcapp -o hello.dsp hello.pro,来生成dsp工程文件,在VC6环境中打开,进行编译和调试。
如果在过程中遇到问题,可以参考下面的内容:
--------------------------------------------------------------------------------(关键点)
1)如果编译时出现打不开stddef.h、string.h之类的错误,说明VC环境路径没有设置好。
运行cmd.exe,然后切换到路径到VC路径下的bin,运行vcvars32.bat,设置vc6.0编译环境的路径。
如果问题还是没有解决,可以用记事本的方式打开vcvars32.bat,看其设置了哪些环境变量,然后手动添加到环境变量中。
如:
VSCommonDir=D:\program files\VC++\Common\
MSDevDir=D:\program files\VC++\Common\msdev98
MSVCDir=D:\program files\VC++\VC98
PATH="%MSDevDir%\BIN";"%MSVCDir%\BIN";"%VSCommonDir%\TOOLS\%VcOsDir%";"%VSCommonDir%\TOOLS";
INCLUDE=%MSVCDir%\ATL\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\MFC\INCLUDE;
LIB=%MSVCDir%\LIB;%MSVCDir%\MFC\LIB;
如果是vcvars32.bat中路径与实际安装的路径不符的话,还可以修改vcvars32.bat,再运行,而不需硬性的添加到系统环境变量中。
--------------------------------------------------------------------
2) 如果编译期间出现这样的错:fatal error C1083: Cannot open include file: 'uxtheme.h': No such file or directory
提示Uxtheme.h 和Tmschema.h找不到,而Schemadef.h是在Tmschema.h里调用的,所以还需要另外三个文件,这在VC6里面没有,包含在 Windows PlatformSDK安转了Visual Studio 2003或 Visual Studio 2005 中都有PlatformSDK。若安装过,就不必费尽去下载385.0 MB的SDK了,默认安装的话三个文件都在
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include
(Uxtheme.h 中定义了在向控件添加外观风格的步骤中以及在相应的代码示例中所引用的 UxTheme API;Tmschema.h 中定义了各个类。
可以到这里下载 http://www.cnblogs.com/xcvm/archive/2006/03/08/346013.html
把这三个文件加到vc的include文件夹下,就可以通过编译了。
--------------------------------------------------------------------
3)运行nmake时,如果提示包含的头文件或库文件找不到,先确定环境变量是否已经设置好,然后试着在VC中设置包含QT的目录:(通常设好了环境变量,就不会出现这样的问题了)
工具->选项->目录:
include files:D:\Qt\4.3.4,D:\Qt\4.3.4\include
execute files: D:\Qt\4.3.4\bin
library files: D:\Qt\4.3.4\lib
如果还是有错,可以打开生成的Makefile.debug或Makefile.release文件,查看INCPATH 项中是否已经包含头文件所在的目录,查看LFLAGS 项中是否已经包含库文件所在的目录,没有的话自行添加,再重新运行qmake。
--------------------------------------------------------------------
4)QT版本不同,程序会有些许不同。
上面的例子在QT3.3.2中,就会提示找不到文件QApplication,将包含头文件改成<qapplication.h>;
QLabel *label = new QLabel("Hello World!")
也应改成QLabel *label = new QLabel("Hello World!",0)
--------------------------------------------------------------------
5)在编译qt-win-opensource-src-4.3.4.zip版本的时候,遇到这样的问题:
link /NOLOGO /SUBSYSTEM:CONSOLE /incremental:no /OUT:"..\bin\qmake.exe"
@C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\nma02552.
metamakefile.obj : error LNK2001: unresolved external symbol "public: __thiscall DspMakefileGenerator::DspMakefileGenerator(void)"( ??0DspMakefileGenerator@@QAE@XZ )
..\bin\qmake.exe : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: 'link' : return code '0x460'
Stop.
先跑到qmake文件夹下,运行了一下nmake,生成了qmake.exe文件,并复制到了bin中,再到上层目录中运行qconfigure.bat msvc,似乎就没问题了,真是奇怪~
--------------------------------------------------------------------
6)如果在VC中进行调试,最好先用qmake -t vcapp -o hello.dsp hello.pro,之类的命令行生成工程文件,自己在VC中创建工程或添加文件的话,很可能产生“无法引用外部符号”之类的错误。
Qt是一个多平台的C++图形用户界面应用程序框架。
它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。
Qt是完全面向对象的很容易扩展,并且允许真正地组件编程。
自从1996年早些时候,Qt进入商业领域,它已经成为全世界范围内数千种成功的应用程序的基础。
----------------------------------------------------------------------------------
版本:qt-win-opensource-4.3.4-mingw.exe
或:qt-win-opensource-src-4.3.4.zip
exe版本,(安装时需要指定mingW的路径,没有的话,应该要点击下载到本地并安装,缺少的话不知道会不会有问题),点击下载安装mingW,非常的慢~
安装成功之后,还是需要进行编译,否则会缺少某些lib或dll文件。
1、安装。
点击安装,选好路径(如设为:D\:QT),点击下载mingw,然后是漫长的等待~
2、编译环境。
命令提示符,
D:
cd QT\4.3.4
configure
根据提示,输入nmake,然后又是漫长的等待~
3、设置环境变量。
QMAKESPEC = win32-msvc
QTDIR = D:\Qt\4.3.4
path = %QTDIR%\bin
这样,如果要修改QT的路径,只要改QTDIR的值就可以了。
至此,QT环境就安装好了。
4、测试
下面用一个小程序测试一下
创建文件名为hello.cpp,输入如下代码:
#include <QApplication>
#include <QLabel>
int main(int argc, char **argv) {
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello World!");
label->show();
return app.exec();
}
保存到某个空文件件中。
然后,打开命令提示符,进入hello.cpp的文件夹,运行:
qmake -project
qmake
nmake
就会在debug文件夹下生成一个.exe文件。
也可以使用qmake -t vcapp -o hello.dsp hello.pro,来生成dsp工程文件,在VC6环境中打开,进行编译和调试。
如果在过程中遇到问题,可以参考下面的内容:
--------------------------------------------------------------------------------(关键点)
1)如果编译时出现打不开stddef.h、string.h之类的错误,说明VC环境路径没有设置好。
运行cmd.exe,然后切换到路径到VC路径下的bin,运行vcvars32.bat,设置vc6.0编译环境的路径。
如果问题还是没有解决,可以用记事本的方式打开vcvars32.bat,看其设置了哪些环境变量,然后手动添加到环境变量中。
如:
VSCommonDir=D:\program files\VC++\Common\
MSDevDir=D:\program files\VC++\Common\msdev98
MSVCDir=D:\program files\VC++\VC98
PATH="%MSDevDir%\BIN";"%MSVCDir%\BIN";"%VSCommonDir%\TOOLS\%VcOsDir%";"%VSCommonDir%\TOOLS";
INCLUDE=%MSVCDir%\ATL\INCLUDE;%MSVCDir%\INCLUDE;%MSVCDir%\MFC\INCLUDE;
LIB=%MSVCDir%\LIB;%MSVCDir%\MFC\LIB;
如果是vcvars32.bat中路径与实际安装的路径不符的话,还可以修改vcvars32.bat,再运行,而不需硬性的添加到系统环境变量中。
--------------------------------------------------------------------
2) 如果编译期间出现这样的错:fatal error C1083: Cannot open include file: 'uxtheme.h': No such file or directory
提示Uxtheme.h 和Tmschema.h找不到,而Schemadef.h是在Tmschema.h里调用的,所以还需要另外三个文件,这在VC6里面没有,包含在 Windows PlatformSDK安转了Visual Studio 2003或 Visual Studio 2005 中都有PlatformSDK。若安装过,就不必费尽去下载385.0 MB的SDK了,默认安装的话三个文件都在
C:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include
(Uxtheme.h 中定义了在向控件添加外观风格的步骤中以及在相应的代码示例中所引用的 UxTheme API;Tmschema.h 中定义了各个类。
可以到这里下载 http://www.cnblogs.com/xcvm/archive/2006/03/08/346013.html
把这三个文件加到vc的include文件夹下,就可以通过编译了。
--------------------------------------------------------------------
3)运行nmake时,如果提示包含的头文件或库文件找不到,先确定环境变量是否已经设置好,然后试着在VC中设置包含QT的目录:(通常设好了环境变量,就不会出现这样的问题了)
工具->选项->目录:
include files:D:\Qt\4.3.4,D:\Qt\4.3.4\include
execute files: D:\Qt\4.3.4\bin
library files: D:\Qt\4.3.4\lib
如果还是有错,可以打开生成的Makefile.debug或Makefile.release文件,查看INCPATH 项中是否已经包含头文件所在的目录,查看LFLAGS 项中是否已经包含库文件所在的目录,没有的话自行添加,再重新运行qmake。
--------------------------------------------------------------------
4)QT版本不同,程序会有些许不同。
上面的例子在QT3.3.2中,就会提示找不到文件QApplication,将包含头文件改成<qapplication.h>;
QLabel *label = new QLabel("Hello World!")
也应改成QLabel *label = new QLabel("Hello World!",0)
--------------------------------------------------------------------
5)在编译qt-win-opensource-src-4.3.4.zip版本的时候,遇到这样的问题:
link /NOLOGO /SUBSYSTEM:CONSOLE /incremental:no /OUT:"..\bin\qmake.exe"
@C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\nma02552.
metamakefile.obj : error LNK2001: unresolved external symbol "public: __thiscall DspMakefileGenerator::DspMakefileGenerator(void)"( ??0DspMakefileGenerator@@QAE@XZ
..\bin\qmake.exe : fatal error LNK1120: 1 unresolved externals
NMAKE : fatal error U1077: 'link' : return code '0x460'
Stop.
先跑到qmake文件夹下,运行了一下nmake,生成了qmake.exe文件,并复制到了bin中,再到上层目录中运行qconfigure.bat msvc,似乎就没问题了,真是奇怪~
--------------------------------------------------------------------
6)如果在VC中进行调试,最好先用qmake -t vcapp -o hello.dsp hello.pro,之类的命令行生成工程文件,自己在VC中创建工程或添加文件的话,很可能产生“无法引用外部符号”之类的错误。