• 8964阅读
  • 10回复

qt编译问题(已找出问题,但还是不解) [复制链接]

上一主题 下一主题
离线wangjun403
 
只看楼主 倒序阅读 楼主  发表于: 2009-11-09
C++ GUI Programming with Qt 4英文原版书上第二章的例子:Chapter 2. Creating Dialogs Rapid Dialog Design
完全按书上写的代码

wangjun@wj-dt:~/qt/qt-book-test/chap02/gotocell2$ ls
gotocell2.pro gotocelldialog.h main.cpp
gotocelldialog.cpp gotocelldialog.ui  

qmake -project
qmake-qt4 gotocell2.pro
然后make
  1. wangjun@wj-dt:~/qt/qt-book-test/chap02/gotocell2$ make
  2. /usr/bin/uic-qt4 gotocelldialog.ui -o ui_gotocelldialog.h
  3. g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I. -o main.o main.cpp
  4. g++ -Wl,-O1 -o gotocell2 main.o    -L/usr/lib -lQtGui -lQtCore -lpthread
  5. main.o: In function `main':
  6. main.cpp:(.text+0x51): undefined reference to `GoToCellDialog::GoToCellDialog(QWidget*)'
  7. collect2: ld returned 1 exit status
  8. make: *** [gotocell2] 错误 1





开始以为自己那里抄写错误,就在网上下了源代码后直接编译,也是提示这个错误
我就接着编译其他例子,也会提示这种错误
这种情况就应该是为自己Qt的问题了

希望各位帮帮忙,处女贴奉上了


编译时的源代码,网上下载的 gotocell2.tar.gz (2 K) 下载次数:4
[ 此帖被wangjun403在2009-11-10 14:54重新编辑 ]
离线wangjun403
只看该作者 1楼 发表于: 2009-11-09
没有人顶下吗?
离线dbzhang800

只看该作者 2楼 发表于: 2009-11-09
很奇怪,从你贴的出错代码看,除 main.cpp 外看不到第二个 cpp文件的存在

既然源码中有pro文件了,你不执行 qmake -project 试一次呢。

或者你 qmake -project生成的pro文件有问题没?由该pro得到的makefile文件呢?
离线wangjun403
只看该作者 3楼 发表于: 2009-11-09
这是一个很简单的小程序,就一个CPP
肯定是执行qmake -project 了
至于qmake -project生成的pro文件有没有问题,我是看不懂里面的东西的

而且很多例子都是提示这个错误的
离线wangjun403
只看该作者 4楼 发表于: 2009-11-09
  1 TEMPLATE      = app
  2 HEADERS       = gotocelldialog.h
  3 SOURCES       = gotocelldialog.cpp \
  4                 main.cpp
  5 FORMS         = gotocelldialog.ui


gotocell2.pro里面的内容
离线rqzrqh

只看该作者 5楼 发表于: 2009-11-09
windows命令行编译成功并能运行
离线wangjun403
只看该作者 6楼 发表于: 2009-11-09
ubuntu9.10环境
离线dbzhang800

只看该作者 7楼 发表于: 2009-11-09
执行

ls
qmake
make clean
make

将输出都贴出来看看呢
离线wangjun403
只看该作者 8楼 发表于: 2009-11-10
按楼上要求,贴出来,大家再帮为分析下
wangjun@wj-dt:~/qt/qt-book-test/chap02/gotocell2$ ls
gotocell2.pro       gotocelldialog.h   main.cpp
gotocelldialog.cpp  gotocelldialog.ui
wangjun@wj-dt:~/qt/qt-book-test/chap02/gotocell2$ qmake
wangjun@wj-dt:~/qt/qt-book-test/chap02/gotocell2$ ls
gotocell2.pro       gotocelldialog.h   main.cpp
gotocelldialog.cpp  gotocelldialog.ui  Makefile
wangjun@wj-dt:~/qt/qt-book-test/chap02/gotocell2$ make clear
make: *** 没有规则可以创建目标“clear”。 停止。
wangjun@wj-dt:~/qt/qt-book-test/chap02/gotocell2$ make clean
rm -f moc_gotocelldialog.o
rm -f moc_gotocelldialog.cpp
rm -f gotocelldialog.cpp gotocelldialog.h
rm -f main.o gotocelldialog.o
rm -f *~ core *.core
wangjun@wj-dt:~/qt/qt-book-test/chap02/gotocell2$ ls
gotocell2.pro  gotocelldialog.ui  main.cpp  Makefile
wangjun@wj-dt:~/qt/qt-book-test/chap02/gotocell2$ make
/usr/share/qt3/bin/uic gotocelldialog.ui -o gotocelldialog.h
uic: File generated with too recent version of Qt Designer (4.0 vs. 3.3.8b)
make: *** [gotocelldialog.h] 错误 1
wangjun@wj-dt:~/qt/qt-book-test/chap02/gotocell2$
离线wangjun403
只看该作者 9楼 发表于: 2009-11-10
找到原因了
自己qmake -project生成的gotocell2.pro文件内容和网上下载的源代码别人生成的gotocell2.pro内容不一样

为自己生成的内容如下
TEMPLATE = app
INCLUDEPATH += .

# Input
HEADERS += ui_gotocelldialog.h
INTERFACES += gotocelldialog.ui
SOURCES += main.cpp


网上down的内容如下
TEMPLATE      = app
HEADERS       = gotocelldialog.h
SOURCES       = gotocelldialog.cpp \
                main.cpp
FORMS         = gotocelldialog.ui

虽然找到了问题,但想知道为什么为qmake -project生成的就不可以呢?
离线steinlee

只看该作者 10楼 发表于: 2009-11-11
The problem could be that your /usr/share/qt3/bin/uic is qt3
and you use qt4 to compile .cpp files. They do not match.

wangjun@wj-dt:~/qt/qt-book-test/chap02/gotocell2$ make
/usr/share/qt3/bin/uic gotocelldialog.ui -o gotocelldialog.h
uic: File generated with too recent version of Qt Designer (4.0 vs. 3.3.8b)
make: *** [gotocelldialog.h] 错误 1
wangjun@wj-dt:~/qt/qt-book-test/chap02/gotocell2$
Looking for remote C/C++ and Qt 兼职
快速回复
限100 字节
 
上一个 下一个