Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Qt4静态编译和奇怪的错误,甚至在它们应该存在之前就发生了_Linux_Compiler Construction_Static_Qt4 - Fatal编程技术网

Linux Qt4静态编译和奇怪的错误,甚至在它们应该存在之前就发生了

Linux Qt4静态编译和奇怪的错误,甚至在它们应该存在之前就发生了,linux,compiler-construction,static,qt4,Linux,Compiler Construction,Static,Qt4,总是选择一个吸引程序员的标题 无论如何,我使用的是linux,我使用 ./configure-static-nomake演示-nomake示例-nomake工具-prefix/local/qt/qtstatic 构建和安装都进行得很顺利,我在qt creator中设置了它,以便可以使用它进行构建。构建任何应用程序都可以正常工作,但是当我运行应用程序时,它会给我一个错误 QWidget:必须在QPaintDevice之前构造QApplication 流产 我知道这意味着一个静态对象试图使用一个需要

总是选择一个吸引程序员的标题

无论如何,我使用的是linux,我使用 ./configure-static-nomake演示-nomake示例-nomake工具-prefix/local/qt/qtstatic

构建和安装都进行得很顺利,我在qt creator中设置了它,以便可以使用它进行构建。构建任何应用程序都可以正常工作,但是当我运行应用程序时,它会给我一个错误

QWidget:必须在QPaintDevice之前构造QApplication 流产

我知道这意味着一个静态对象试图使用一个需要首先调用QApplication的类(QPaintDevice),由于静态对象都是在实际应用程序之前处理的,这显然会失败,我的main()之后的第一行是QApplication,但我知道这没有什么区别,我的.pro确实包含 CONFIGURE+=static,我在主程序中定义了static,Qt4就是不喜欢我

我怎样才能修复它,这样静态对象就不会像这样疯狂了

#include <QtGui/QApplication>
#include "microbrowse.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    microbrowse w;
    w.show();
    return a.exec();
}
#包括
#包括“microbrose.h”
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
微丛w;
w、 show();
返回a.exec();
}

是main,但这可能并不重要,对于QT creator制作的所有QT应用程序,main几乎相同,除了microbrowse是您正在使用的任何小部件的名称。小部件微浏览器是整个程序,它所做的只是创建QApplication和dimension微浏览器

我认为类
微浏览器
包含这样一个不可能静态链接的对象。还要检查您的Qt构建。您应该在配置时添加
/configure-relase
-debug

我认为类
微浏览器
包含这样一个无法静态链接的对象。还要检查您的Qt构建。您应该在配置时添加
/configure-relase
-debug

可以发布main()吗,这可能会有帮助。您不应该在堆栈上声明微浏览器吗<代码>微浏览器*w=新微浏览器();w->show()@Evan:您的代码在堆上而不是堆栈上创建微浏览器。但这并不重要——在同一时间调用同一个构造函数。重要的是微丛不是静止的。OP的代码在我看来很好。我怀疑问题出在microbrowse的实现中。您能发布main()吗?这可能会有帮助。您不应该在堆栈上声明microbrowse吗<代码>微浏览器*w=新微浏览器();w->show()@Evan:您的代码在堆上而不是堆栈上创建微浏览器。但这并不重要——在同一时间调用同一个构造函数。重要的是微丛不是静止的。OP的代码在我看来很好。我怀疑问题在于微浏览器的实现。