谁遇到过这个错误?

时间:2021-03-17 20:08:47
ASSERT failure in QCoreApplication: "there should be only one application object", file kernel\qcoreapplication.cpp, line 540

郁闷,这是什么原因引起的

8 个解决方案

#1


你在试图创建多个QCoreApplication或QApplication对象

#2


should be only one application object

#3


根本原因是我刚说的,直接原因是下面这个(刚好开着该文件,顺便贴一下):

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;
...
}

#4


英文的意思我知道啊,我的意思是,通常是什么情况会引发这个错误?我只有一个main啊!

#5


引用 4 楼 csdn5211 的回复:
英文的意思我知道啊,我的意思是,通常是什么情况会引发这个错误?我只有一个main啊!

没有第二种可能性,答案就是那句英文。和你用几个main无关,只和你试图创建几个QCoreApplication或QApplication(或其他你自己派生或第三方的派生类)的实例个数有关。

不过这种东西,很容易定位吧,你不调试程序?

#6


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

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

#7


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

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


比较怀疑你单元测试本身的代码有问题。

#8


引用 6 楼 csdn5211 的回复:
我是在用QTest框架做这个dll的单元测试,QTest自己会创建QApplication,只能认为这个dll也创建了,可是它并不是QT开发的啊!

QTest不一定会创建QApplication,取决于你用的哪个宏

#1


你在试图创建多个QCoreApplication或QApplication对象

#2


should be only one application object

#3


根本原因是我刚说的,直接原因是下面这个(刚好开着该文件,顺便贴一下):

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;
...
}

#4


英文的意思我知道啊,我的意思是,通常是什么情况会引发这个错误?我只有一个main啊!

#5


引用 4 楼 csdn5211 的回复:
英文的意思我知道啊,我的意思是,通常是什么情况会引发这个错误?我只有一个main啊!

没有第二种可能性,答案就是那句英文。和你用几个main无关,只和你试图创建几个QCoreApplication或QApplication(或其他你自己派生或第三方的派生类)的实例个数有关。

不过这种东西,很容易定位吧,你不调试程序?

#6


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

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

#7


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

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


比较怀疑你单元测试本身的代码有问题。

#8


引用 6 楼 csdn5211 的回复:
我是在用QTest框架做这个dll的单元测试,QTest自己会创建QApplication,只能认为这个dll也创建了,可是它并不是QT开发的啊!

QTest不一定会创建QApplication,取决于你用的哪个宏