• 7112阅读
  • 4回复

Qt4.6 SDK XP安装,编译examples头文件读取错误 [复制链接]

上一主题 下一主题
离线troyseraphy
 
只看楼主 倒序阅读 楼主  发表于: 2010-12-21
我在windowsXP下使用SDK安装的Qt4.6,系统中安装有VisualC++6.0
环境变量QMAKESPEC设置为win32-g++,mingw和QT的环境变量也按要求设置了。
安装完成后,写了哥HelloQt带PuahButton的那种编译没有问题
但是,编译Qt Creator中的examples时就报错,我看了下,发现错误头文件读取的都是我的VisualStudio6.0的头文件。
于是我将include环境变量中添加了mingw的include(放在第一位),依然无效。
不知道哪里设置错了?
离线jdwx

只看该作者 1楼 发表于: 2010-12-22
你的QT4.6是VC的,还是G++的?版本不一样QMake也不一样,用VC的QMake生成的Makefile还是去找VC的include!就是用MinGw32-Make也会去找VC的Include。
看看你的Makefile第五行就知道啦(Command:)!
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线troyseraphy
只看该作者 2楼 发表于: 2010-12-25
谢谢,明天我去实验室看看,装Qt的机子在实验室。

用SDK安装的话,SDK会先安装一个MINGW。
后来我怀疑可能是需要安装前先设置好环境变量再安装,这样安装程序就能检测到安装的mingw了。
于是,我把QtCreate和VC++6.0都卸载了,并且删掉了VC的环境变量,但是保留了QtCreator设置的环境,如文件夹位置和编译器选择等。然后按一下步骤安装的:
1.安装QtCreator的SDK(此时环境变量是已经设置好了的)
2.安装完成后用Demo里面的前几个例子编译了下,好使!这些原来是会报错的。
3.安装VC++6.0,这个wizard会要求设置环境变量(不设的话不行)。
4.安装完后又用Demo里面的前几个例子编译了下,依然好使。但是当我选中后面的一个例子,stylesheet时,又报错了,还是读取了VC的头文件的,然后又试了下后面的另外一个例子,还是报错。
最多见的一个错是读取了VC的include里面的stdlib.h

目前自己写的一些小例程都还是好使的,没有过类似的编译错误


不知道该如何设置才能不让QtCreatro读错头文件。
P.S.实验室网速慢打不开论坛,只能晚上回家看了。
离线troyseraphy
只看该作者 3楼 发表于: 2010-12-26
我看了下makefile,原来前几个好用是因为没有装VC时编译了,当时的makefile留下了。删掉原来的makefile后重新弄,又出现原来的问题。
这个是新的makefile
CC            = gcc
CXX           = g++
DEFINES       = -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN
CFLAGS        = -g -Wall $(DEFINES)
CXXFLAGS      = -g -frtti -fexceptions -mthreads -Wall $(DEFINES)
INCPATH       = -I"..\..\..\include\QtCore" -I"..\..\..\include\QtGui" -I"..\..\..\include" -I"..\..\..\include\ActiveQt" -I"tmp\moc\debug_shared" -I"d:\Programming\Microsoft Visual Studio6\VC98\atl\include" -I"d:\Programming\Microsoft Visual Studio6\VC98\mfc\include" -I"d:\Programming\Microsoft Visual Studio6\VC98\include" -I"%MINGW%\include" -I"..\..\..\mkspecs\win32-g++"
LINK        =        g++
LFLAGS        =        -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows
LIBS        =        -L"d:\Programming\Qt\2010.02.1\qt\lib" -L"d:\Programming\Microsoft Visual Studio6\VC98\mfc\lib" -L"d:\Programming\Microsoft Visual Studio6\VC98\lib" -L"d:\Programming\Qt\2010.02.1\qt\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
QMAKE         = d:\programming\qt\2010.02.1\qt\bin\qmake.exe
IDC           = d:\Programming\Qt\2010.02.1\qt\bin\idc.exe
这里它可以发现编译器选择是g++和gcc,编译用的是mingw,但是库和头文件用的VC的。

基本上可以得出结论,应该是Qt Creatro 和 VC6.0公用了lib include两个环境变量,不知道能不能设置开发环境使用不同的环境变量。
离线troyseraphy
只看该作者 4楼 发表于: 2010-12-26
把VC的环境变量都删掉后就没问题了。还是环境变量的冲突。
快速回复
限100 字节
 
上一个 下一个