• 8830阅读
  • 9回复

用Dev c++来编译QT4 程序,只要用了Slots就联接出错 [复制链接]

上一主题 下一主题
离线asderhunk
 

只看楼主 倒序阅读 楼主  发表于: 2008-02-23
用Dev c++来编译QT4 程序,只要用了Slots就联接出错
— 本帖被 XChinux 执行加亮操作(2008-02-24) —
RT,只要程序里用到槽,每次在最后的link阶段都出现
。。。\Makefile.win [Build Error]  [Pro.exe] Error 1  这样的错误
同样的程序,用qmake  make 的方式编译是没有问题的。

但是用qmake  make 的方式来编译,怎么调试程序呢?例如设置断点,查看变量之类的,哪位朋友能提供点资料?
离线浪漫天使
只看该作者 1楼 发表于: 2008-02-24
能给出更多的详细信息吗 方便分析
离线asderhunk

只看该作者 2楼 发表于: 2008-02-24
恩,这么说吧,用DEV C++ 我只打开一简单的 Hello world 程序,是什么问题都没有的,但是只要
class Form:public QMainWindow
{
//  Q_OBJECT
  public:
    Form();
把  Q_OBJECT 一放出来其他都不动,马上就会在linking 的时候出现类似这样的错误:
E:\game\pintu.o(.text+0x182) In function `ZN4FormC2Ev':
                                          [Linker error] undefined reference to `vtable for Form'
                                          [ Linker error] undefined reference to `vtable for Form'
E:\game\pintu.o(.text+0x309c) In function `ZN4FormC1Ev':
                                          [Linker error] undefined reference to `vtable for Form'
                                          [Linker error] undefined reference to `vtable for Form'
E:\game\pintu.o(.text+0x309c) ld returned 1 exit status
E:\game\Makefile.win [Build Error]  [Pro.exe] Error 1
离线asderhunk

只看该作者 3楼 发表于: 2008-02-24
再补充一下,因为之前的DEV C++还是无法调试,所以在网上找了方法:

1、在“工具”-》编译选项-》"Add following commands when calling complier"下面的编辑框里加上:-g3
2、在下面的"Add these commands to the linker command line" 下的编辑框上加上:-g3

3、转到programs页,把gcc行修改为:gcc.exe -D__DEBUG__

在没加 -g3 这个参数前,是没有 E:\game\pintu.o(.text+0x182) In function `ZN4FormC2Ev':
这样的错误的,其他的跟现在一样
离线xjcook

只看该作者 4楼 发表于: 2008-02-25
是不是生成的moc文件没有加入到你的工程里面去?
用到slot的时候,是要生成moc文件的,使用qmake的话,他帮你生成并且加入到你的工程中了,
如果不用就要你自己处理了。
离线asderhunk

只看该作者 5楼 发表于: 2008-02-25
xjcook ,我不是很明白你的意思哦,我是在windows下用dev c++ 编译的,并没有生成moc文件
不过在浪漫天使的帮助下我配置好了VS2005,这个用起来还是很爽的,调试也方便,呵呵,以后就用这个学习了,开发环境的配置就算到一段落了,谢谢各位的热心帮助!
离线tokens

只看该作者 6楼 发表于: 2008-02-26
信号和槽不是c++中的关键字..
是moc转换过后,才能编译的..所以你直接在dev中编译当然通不过了..
头大,在学QT
离线juven201314
只看该作者 7楼 发表于: 2008-09-13
LS的,那么怎样那能在DEV 中调用MOC编译啊?
正遇到这个问题,头痛
离线goldenalex

只看该作者 8楼 发表于: 2008-09-16
应该是生成的moc文件的问题,每次编译之前都clean一下吧。。。
离线billanking

只看该作者 9楼 发表于: 2010-11-20
我有个疑问,这个slots  QMAKE在什么时候以什么方式去掉了让C++编译器顺利通过了。
快速回复
限100 字节
 
上一个 下一个