谁遇到过这个错误?

csdn5211 2011-04-26 10:39:35
ASSERT failure in QCoreApplication: "there should be only one application object", file kernel\qcoreapplication.cpp, line 540

郁闷,这是什么原因引起的
...全文
279 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhu_xz 2011-04-29
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 csdn5211 的回复:]

我是在用QTest框架做这个dll的单元测试,QTest自己会创建QApplication,只能认为这个dll也创建了,可是它并不是QT开发的啊!
[/Quote]
QTest不一定会创建QApplication,取决于你用的哪个宏
dbzhang800 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 csdn5211 的回复:]

能定位,是一个dll的接口,一调用它就会出这个错误。可这个dll不是用qt开发的啊,怎么会创建QCoreApplication或QApplication对象呢?

我是在用QTest框架做这个dll的单元测试,QTest自己会创建QApplication,只能认为这个dll也创建了,可是它并不是QT开发的啊!
[/Quote]

比较怀疑你单元测试本身的代码有问题。
csdn5211 2011-04-26
  • 打赏
  • 举报
回复
能定位,是一个dll的接口,一调用它就会出这个错误。可这个dll不是用qt开发的啊,怎么会创建QCoreApplication或QApplication对象呢?

我是在用QTest框架做这个dll的单元测试,QTest自己会创建QApplication,只能认为这个dll也创建了,可是它并不是QT开发的啊!
dbzhang800 2011-04-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 csdn5211 的回复:]

英文的意思我知道啊,我的意思是,通常是什么情况会引发这个错误?我只有一个main啊!
[/Quote]
没有第二种可能性,答案就是那句英文。和你用几个main无关,只和你试图创建几个QCoreApplication或QApplication(或其他你自己派生或第三方的派生类)的实例个数有关。

不过这种东西,很容易定位吧,你不调试程序?
csdn5211 2011-04-26
  • 打赏
  • 举报
回复
英文的意思我知道啊,我的意思是,通常是什么情况会引发这个错误?我只有一个main啊!
dbzhang800 2011-04-26
  • 打赏
  • 举报
回复
根本原因是我刚说的,直接原因是下面这个(刚好开着该文件,顺便贴一下):

QCoreApplication::QCoreApplication(int &argc, char **argv)
{
init();
...
}

void QCoreApplication::init()
{
...
Q_ASSERT_X(!self, "QCoreApplication", "there should be only one application object");
QCoreApplication::self = this;
...
}
念茜 2011-04-26
  • 打赏
  • 举报
回复
should be only one application object
dbzhang800 2011-04-26
  • 打赏
  • 举报
回复
你在试图创建多个QCoreApplication或QApplication对象

16,175

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧