• 11698阅读
  • 14回复

qt自带例子编译问题 [复制链接]

上一主题 下一主题
离线piteqiu
 

只看楼主 倒序阅读 楼主  发表于: 2010-12-30
我是新手,新安装了qt-sdk-win-opensource-2010.05.exe,运行qtcreator,打开qt自带的例子,不管打开哪一个,都会提示:

:: error: collect2: ld returned 1 exit status

搜索了一下,有的说是关闭后重新打开就可以,但是我关闭后重新编译还是不行。

而且这是qt自带的例子,不是我写的,怎么会出现这种情况呢 ?
离线roywillow

只看该作者 1楼 发表于: 2010-12-30
仔细看看complie output或许会很有帮助
里面标成红色的内容应该就是错误的地方

或者换一下编译选项,debug换成release试试呢?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线piteqiu

只看该作者 2楼 发表于: 2010-12-30
引用第1楼roywillow于2010-12-30 20:09发表的  :
仔细看看complie output或许会很有帮助
里面标成红色的内容应该就是错误的地方
或者换一下编译选项,debug换成release试试呢?

谢谢回复!
1. debug换成release问题依旧.
2. 我运行了examples中dialog的第一个例子:configdialog。complie output中红色部分为:

c:/qt/2010.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../crt2.o:crt1.c:(.text+0x1b3): undefined reference to `_imp___iob'

c:/qt/2010.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../crt2.o:crt1.c:(.text+0x1ce): undefined reference to `_imp___iob'

c:/qt/2010.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../crt2.o:crt1.c:(.text+0x1df): undefined reference to `_imp___iob'

c:/qt/2010.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../crt2.o:crt1.c:(.text+0x1f2): undefined reference to `_imp___iob'

c:/qt/2010.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../crt2.o:crt1.c:(.text+0x265): undefined reference to `_imp___iob'

c:/qt/2010.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../crt2.o:crt1.c:(.text+0x276): more undefined references to `_imp___iob' follow

c:/qt/2010.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../crt2.o:crt1.c:(.text+0x2c3): undefined reference to `_imp__atexit'

c:/qt/2010.05/mingw/bin/../lib/gcc/mingw32/4.4.0/../../../crt2.o:crt1.c:(.text+0x2d3): undefined reference to `_imp___onexit'

c:/qt/2010.05/mingw/bin/../lib/gcc/mingw32/4.4.0/libstdc++.a(vterminate.o):C:\MinGW\src\gccbf\mingw32\libstdc++-v3\libsupc++/../../../../gcc-4.4.0/libstdc++-v3/libsupc++/vterminate.cc:47: undefined reference to `_imp___iob'

c:/qt/2010.05/mingw/bin/../lib/gcc/mingw32/4.4.0/libstdc++.a(vterminate.o):C:\MinGW\src\gccbf\mingw32\libstdc++-v3\libsupc++/../../../../gcc-4.4.0/libstdc++-v3/libsupc++/vterminate.cc:65: undefined reference to `_imp___iob'

c:/qt/2010.05/mingw/bin/../lib/gcc/mingw32/4.4.0/libstdc++.a(vterminate.o):C:\MinGW\src\gccbf\mingw32\libstdc++-v3\libsupc++/../../../../gcc-4.4.0/libstdc++-v3/libsupc++/vterminate.cc:91: undefined reference to `_imp___iob'

collect2: ld returned 1 exit status

mingw32-make[1]: *** [debug/tabdialog.exe] Error 1

mingw32-make: *** [debug-all] Error 2

The process "C:/Qt/2010.05/mingw/bin/mingw32-make.exe" exited with code %2.
Error while building project tabdialog (target: Desktop)
When executing build step 'Make'

上面的这些也不是很懂。
我是新手,主要是写fortran,c++也懂得有限。因此拿到qt首先想到运行其自带例子,但是自带例子为什么会出现错误呢?
离线roywillow

只看该作者 3楼 发表于: 2010-12-30
参考一下这个看看呢?
http://java123.net/special/arc-17486.html
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线jdwx

只看该作者 4楼 发表于: 2010-12-30
先弄一个最简单的试试?
先建立一个空工程,再新建一个main.cpp,复制代码,编译,试试吧!
#include <QApplication> //此处和原书的4.3版中的  头文件路径有所差异
#include <QLabel>  //同上

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QLabel *label = new QLabel("Hello Qt!");
    label->show();

    return a.exec();
}
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线piteqiu

只看该作者 5楼 发表于: 2010-12-30
回 3楼(roywillow) 的帖子
你好,按照这个页面所说的一些做法做了修改:
=============================================================
需要修改工程的bulid env
INCLUDE:D:Qt20100201qtinclude;D:Qt20100201mingwinclude;
INETSDK:
PATH:D:Qt20100201qtbin;D:Qt20100201mingwbin;
LIB:D:Qt20100201qtlib;D:Qt20100201mingwlib;
增加
MINGW:D:Qt20100201mingw;
QTDIR:D:Qt20100201qt;
个人觉得修改系统的环境变量没有用,所以在工程修改bulid env这样就可以了
=============================================================
这样修改还是没有用!
而且这个页面最后好像没说明怎么做啊!

而且我写简单的qt例子是可以通过编译并运行的,为什么自带pro就不能呢?
[ 此帖被piteqiu在2010-12-30 21:15重新编辑 ]
离线piteqiu

只看该作者 6楼 发表于: 2010-12-30
引用第4楼jdwx于2010-12-30 20:44发表的  :
先弄一个最简单的试试?
先建立一个空工程,再新建一个main.cpp,复制代码,编译,试试吧!
#include <QApplication> //此处和原书的4.3版中的  头文件路径有所差异
#include <QLabel>  //同上
.......

这个例子是可以编译并运行通过的。

但是自带pro死活通不过!!
离线jdwx

只看该作者 7楼 发表于: 2010-12-30
不要试了,我也编译不了!
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线roywillow

只看该作者 8楼 发表于: 2010-12-30
引用第8楼jdwx于2010-12-30 21:12发表的  :
不要试了,我也编译不了!

其实我编译成功了
至今还没发现没法成功的例子……
会不会是因为我是一路从4.6.X装过来的呢?
至今在某个选项里显示不出来4.7而是显示4.6.X……
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线jdwx

只看该作者 9楼 发表于: 2010-12-30
肯定是库的问题,版本不一致,例子是老版本的!
但是前一个月我用4.4.3版和4.7.0版编译一样的代码没问题!
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线piteqiu

只看该作者 10楼 发表于: 2010-12-30
这两天把我郁闷坏了,总是觉得qt自带的例子编译不成功,对qt都一度失去信心了!
离线roywillow

只看该作者 11楼 发表于: 2010-12-30
彻底删除掉然后重装如何?
是不是跟vs之类的冲突了?
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线jdwx

只看该作者 12楼 发表于: 2010-12-31
我在控制台编译了一下,确实去vc6那里了!
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线piteqiu

只看该作者 13楼 发表于: 2010-12-31
引用第13楼jdwx于2010-12-31 09:13发表的  :
我在控制台编译了一下,确实去vc6那里了!

有啥解决办法吗?
离线jdwx

只看该作者 14楼 发表于: 2010-12-31
也没什么,我在Ubuntu里试了一下,成功!
再回Windows,只要把例子拿到其它目录里就编译成功。
WHY?????
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
快速回复
限100 字节
 
上一个 下一个