• 9906阅读
  • 12回复

用Qt4.8.4和VS2010再编译时出现了三个错误 [复制链接]

上一主题 下一主题
离线jshsmonk
 

只看楼主 倒序阅读 楼主  发表于: 2014-03-03
大家好!我是Qt初学者,现在正学习往届师兄留下的、用Qt4.8.4开发的关于几何计算的代码。我用Qt4.8.4和VS2010再编译时出现了三个错误,且在多个源文件中重复出现:
error C2065: 'M_PI': undeclared identifer
error C3861: 'trunc': identifier not found
error C3861: 'round': identifier not found
M_PI应该是圆周率,大概是双精度的宏定义。后两个trunc和round应该是函数。不知是我没有把VS2010配置好,还是当年师兄用Qt4.8.4调用了其他平台的宏定义或函数。感觉应该是后面的这个原因,那么他又是调用了哪个平台的这些东东呢?为何win下的VS2010不认呢?
我已在网上找寻了一周解决办法了,仍然没有头绪,敬请各位前辈指教!谢谢!
离线wjz2047

只看该作者 1楼 发表于: 2014-03-03
你在vs中写一个简单的qt程序,看能不能运行。如果可以,说明配置什么的没问题。那样的话,这个错误应该是你自己代码的问题。建议仔细调试或者问师兄
离线dbzhang800

只看该作者 2楼 发表于: 2014-03-03
你用的是C99中的函数,但是VS对C99标准支持很差。你可以换用MinGW
离线jshsmonk

只看该作者 3楼 发表于: 2014-03-03
回 wjz2047 的帖子
wjz2047:你在vs中写一个简单的qt程序,看能不能运行。如果可以,说明配置什么的没问题。那样的话,这个错误应该是你自己代码的问题。建议仔细调试或者问师兄 (2014-03-03 11:15) 

谢谢您两位的指教!如题,现在我的计算机中已经装了一个Qt4.8.4(VS2010),我还可以同时再装一个Qt4.8.4 (Mingw)吗?还是需要把前面那个卸载了再装这个?如果两个可以同时装用,我是否可以装一个不同版本的(我指的是不是Qt4.8.4版),比如我想装一个最新版Qt5.2.1(MinGW),因为它自带MinGW4.8?
离线dbzhang800

只看该作者 4楼 发表于: 2014-03-03
可以同时装,而且你最好装Qt5.2.1,因为Qt Creator中自带的MinGW 和 Qt5一样,但是 和 Qt4.8所用的MinGW不一样。
离线wjz2047

只看该作者 5楼 发表于: 2014-03-03
回 jshsmonk 的帖子
jshsmonk:谢谢您两位的指教!如题,现在我的计算机中已经装了一个Qt4.8.4(VS2010),我还可以同时再装一个Qt4.8.4 (Mingw)吗?还是需要把前面那个卸载了再装这个?如果两个可以同时装用,我是否可以装一个不同版本的(我指的是不是Qt4.8.4版),比如我想装一个最新版Qt5.2.1(MinGW), .. (2014-03-03 16:55) 

先别急着换版本,既然版主说函数不太好,那么你可以试试寻找合适的函数替换掉
离线jshsmonk

只看该作者 6楼 发表于: 2014-03-03
回 dbzhang800 的帖子
dbzhang800:可以同时装,而且你最好装Qt5.2.1,因为Qt Creator中自带的MinGW 和 Qt5一样,但是 和 Qt4.8所用的MinGW不一样。 (2014-03-03 17:01) 

谢谢版主!Qt5.2.1 for minGW是这个qt-opensource-windows-x86-mingw48_opengl-5.2.1.exe,以前老版本(minGW)不带OpenGL标识,这个带OpenGL标识是什么意思呀?
离线dbzhang800

只看该作者 7楼 发表于: 2014-03-03
回 jshsmonk 的帖子
jshsmonk:谢谢版主!Qt5.2.1 for minGW是这个qt-opensource-windows-x86-mingw48_opengl-5.2.1.exe,以前老版本(minGW)不带OpenGL标识,这个带OpenGL标识是什么意思呀? (2014-03-03 17:12)

这个OpenGL和MinGW没关系,

Qt5 分 OpenGL 和 angle 两个版本,前者使用系统的opengl驱动,后者使用Angle封装的Direct3D驱动。
离线jshsmonk

只看该作者 8楼 发表于: 2014-03-03
回 dbzhang800 的帖子
dbzhang800:这个OpenGL和MinGW没关系,
Qt5 分 OpenGL 和 angle 两个版本,前者使用系统的opengl驱动,后者使用Angle封装的Direct3D驱动。
 (2014-03-03 17:31) 

版主:您好!我安装了Qt5.2.1 for MinGW后,重新Build project,没有了如题所述的三个错误。谢谢您!您真厉害!不过,出现了一个新错误:
QDialog: No such file or directory
#include <QDialog>
这个错误应该怎么解决呢?请指教!谢谢!
离线jshsmonk

只看该作者 9楼 发表于: 2014-03-03
回 dbzhang800 的帖子
dbzhang800:这个OpenGL和MinGW没关系,
Qt5 分 OpenGL 和 angle 两个版本,前者使用系统的opengl驱动,后者使用Angle封装的Direct3D驱动。
 (2014-03-03 17:31) 

版主:您好!对于新出现的问题,我按网上搜来的方案在.pro文件的第一行加上:
QT += widgets
但全部重建中,出现如下错误:
missing separator. Stop.
Makefile.Release.

还要请您出手!谢谢!
离线dbzhang800

只看该作者 10楼 发表于: 2014-03-04
回 jshsmonk 的帖子
jshsmonk:版主:您好!对于新出现的问题,我按网上搜来的方案在.pro文件的第一行加上:
QT += widgets
但全部重建中,出现如下错误:
missing separator. Stop.
....... (2014-03-03 20:53) 

这个,不清楚是你用是Qt Creator还是命令行,如果是命令行的话,运行完qmake后,你需要的运行MinGW32-make而不是nmake

离线jshsmonk

只看该作者 11楼 发表于: 2014-03-04
昨晚我是先在命令行执行qmake,然后想执行make clean后再执行make,但是在输入make clean后,命令行窗口显示出错:不知道make是什么。只好在Qt Creater中打开.pro文件进行Build,出现了上述错误:
QDialog: No such file or directory
#include <QDialog>
刚才,我在命令行里执行完qmake,输入MinGW32-make,开始编译,中途停了,出现:
cleanupdialog.h:31:19: fatal error: QDialog: No such file or directory
#include <QDialog>
前几天,我在Qt5.2.1 Creater中Build时,同时出现了上述三个C99标准不兼容的问题和这个QDialog找不到的问题。后来,我给VS2010装了个Qt Addin,在VS2010中调试时就只有上述的与C99不兼容的三个问题,那个QDialog找不到的问题没有出现。
是不是还是设置有问题?
请您指点,我现在都不知道接下来该怎么做!
离线dbzhang800

只看该作者 12楼 发表于: 2014-03-04
看起来没什么大问题,

1. 首先,你有几个pro/pri文件?不妨每一个都加上 QT+=widgets (因为Qt4中的gui模块在Qt5中分成了gui, widgets 等多个模块)
2. 命令行的话,确保使用的make是 MinGW32-make 而不是Nmake
3. make clean出错的话,不妨手动删除中间产物,而后再使用 qmake/make 进行编译
快速回复
限100 字节
 
上一个 下一个