vs+opencv+qt 出现错误:应用程序无法正常启动(0xc000007b)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vs+opencv+qt 出现错误:应用程序无法正常启动(0xc000007b)相关的知识,希望对你有一定的参考价值。

应用程序错误问题:
1.木马病毒造成常用病毒捆绑应用程序和系统文件,然后安全杀毒软件把有木马病毒应用程序和系统文件查杀导致。
2.应用程序组件丢失,应用程序完整的运行需要一些系统文件或者某些ll文件支持的,如果应用程序组件不完整也会导致的。
3.系统文件损坏或丢失,盗版系统或Ghost版本系统,很容易出现该问题。
4.操作系统自身的问题,操作系统本身也会有bug 。
5.硬件问题,例如内存条坏了或者存在质量问题,或者内存条的金手指的灰尘特别多。

应用程序错误解决方法:
1.检查电脑是否存在病毒,请使用百度卫士进行木马查杀。
2.系统文件损坏或丢失,盗版系统或Ghost版本系统,很容易出现该问题。建议:使用完整版或正版系统。
3.安装的软件与系统或其它软件发生冲突,找到发生冲突的软件,卸载它。如果更新下载补丁不是该软件的错误补丁,也会引起软件异常,解决办法:卸载该软件,重新下载重新安装试试。顺便检查开机启动项,把没必要启动的启动项禁止开机启动。
4.如果检查上面的都没问题,可以试试下面的方法。
打开开始菜单→运行→输入cmd→回车,在命令提示符下输入下面命令 for %1 in (%windir%\system32\*.dll) do regsvr32.exe /s %1回车。
完成后,在输入下面
for %i in (%windir%\system32\*.ocx) do regsvr32.exe /s %i 回车。
如果怕输入错误,可以复制这两条指令,然后在命令提示符后击鼠标右键,打“粘贴”,回车,耐心等待,直到屏幕滚动停止为止(重启电脑)。
参考技术A 楼主你好,可以安装使用腾讯电脑管家杀毒管理二合一,木马查杀升级为专业杀毒,查杀更彻底;系统清理能力提升2倍,电脑加速能力提升35%;16层实时防护,全方位保护电脑安全;电脑管家性能全面优化,大幅降低系统资源占用;首页安全体检升级,动感界面、全新体验;个性换肤华丽升级,精彩皮肤抢鲜使用;

为啥在带有 QT 的 VS 中出现这些错误 C2134、C4430 等?

【中文标题】为啥在带有 QT 的 VS 中出现这些错误 C2134、C4430 等?【英文标题】:Why do I get these errors C2134, C4430 etc, in VS with QT?为什么在带有 QT 的 VS 中出现这些错误 C2134、C4430 等? 【发布时间】:2015-11-06 11:55:02 【问题描述】:

我的任务是在 Visual Studio 中使用 QT 插件创建一个 OpenGL 应用程序。

我正在尝试编译代码,但出现了一些错误。当我将要显示 OpenGL 内容的 WIDGET 推广到我创建的类时,就会发生这种情况。

以下是错误:

Error   error C2143: syntax error : missing ';' before '*'  32  1   QTOpenGLVS
Error   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   32  1   QTOpenGLVS
Error   error C2065: 'widget' : undeclared identifier   48  1   QTOpenGLVS
Error   error C2061: syntax error : identifier 'QTOpenGLVS' 48  1   QTOpenGLVS
Error   error C2065: 'widget' : undeclared identifier   49  1   QTOpenGLVS
Error   error C2227: left of '->setObjectName' must point to class/struct/union/generic type    49  1   QTOpenGLVS
Error   error C2065: 'widget' : undeclared identifier   53  1   QTOpenGLVS
Error   error C2227: left of '->sizePolicy' must point to class/struct/union/generic type   53  1   QTOpenGLVS
Error   error C2228: left of '.hasHeightForWidth' must have class/struct/union  53  1   QTOpenGLVS
Error   error C2065: 'widget' : undeclared identifier   54  1   QTOpenGLVS
Error   error C2227: left of '->setSizePolicy' must point to class/struct/union/generic type    54  1   QTOpenGLVS
Error   error C2065: 'widget' : undeclared identifier   56  1   QTOpenGLVS
Error   error C2143: syntax error : missing ';' before '*'  32  1   QTOpenGLVS
Error   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   32  1   QTOpenGLVS
Error   error C2065: 'widget' : undeclared identifier   48  1   QTOpenGLVS
Error   error C2061: syntax error : identifier 'QTOpenGLVS' 48  1   QTOpenGLVS
Error   error C2065: 'widget' : undeclared identifier   49  1   QTOpenGLVS
Error   error C2227: left of '->setObjectName' must point to class/struct/union/generic type    49  1   QTOpenGLVS
Error   error C2065: 'widget' : undeclared identifier   53  1   QTOpenGLVS
Error   error C2227: left of '->sizePolicy' must point to class/struct/union/generic type   53  1   QTOpenGLVS
Error   error C2228: left of '.hasHeightForWidth' must have class/struct/union  53  1   QTOpenGLVS
Error   error C2065: 'widget' : undeclared identifier   54  1   QTOpenGLVS
Error   error C2227: left of '->setSizePolicy' must point to class/struct/union/generic type    54  1   QTOpenGLVS
Error   error C2065: 'widget' : undeclared identifier   56  1   QTOpenGLVS
Error   error C2143: syntax error : missing ';' before '*'  32  1   QTOpenGLVS
Error   error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   32  1   QTOpenGLVS
Error   error C2065: 'widget' : undeclared identifier   48  1   QTOpenGLVS
Error   error C2061: syntax error : identifier 'QTOpenGLVS' 48  1   QTOpenGLVS
Error   error C2065: 'widget' : undeclared identifier   49  1   QTOpenGLVS
Error   error C2227: left of '->setObjectName' must point to class/struct/union/generic type    49  1   QTOpenGLVS
Error   error C2065: 'widget' : undeclared identifier   53  1   QTOpenGLVS
Error   error C2227: left of '->sizePolicy' must point to class/struct/union/generic type   53  1   QTOpenGLVS
Error   error C2228: left of '.hasHeightForWidth' must have class/struct/union  53  1   QTOpenGLVS
Error   error C2065: 'widget' : undeclared identifier   54  1   QTOpenGLVS
Error   error C2227: left of '->setSizePolicy' must point to class/struct/union/generic type    54  1   QTOpenGLVS
Error   error C2065: 'widget' : undeclared identifier   56  1   QTOpenGLVS

我拥有的类是 ma​​in.cppqtopenglvs.cpp 和头文件:qtopenglvs.h

main.cpp:

#include "qtopenglvs.h"
#include <QtWidgets/QApplication>
#include "MyGlWindow.h"


void init()


int main(int argc, char *argv[])

    QApplication a(argc, argv);
    QTOpenGLVS w;
    w.show();
    return a.exec();

qtopenglvs.cpp

#include "qtopenglvs.h"
#include <GL/glut.h>

QTOpenGLVS::QTOpenGLVS(QWidget *parent)
    : QMainWindow(parent)

    ui.setupUi(this);


void QTOpenGLVS::initiliazeGL()
    glClearColor(1, 1, 0, 1);

void QTOpenGLVS::paintGL()


void QTOpenGLVS::resizeGL(int w, int h)


qtopenglvs.h

#ifndef QTOPENGLVS_H
#define QTOPENGLVS_H

#include <QtWidgets/QMainWindow>
#include "ui_qtopenglvs.h"

class QTOpenGLVS : public QMainWindow

    Q_OBJECT

public:
    explicit QTOpenGLVS(QWidget *parent = 0);

    void initiliazeGL();
    void paintGL();
    void resizeGL(int w, int h);

private:
    Ui::QTOpenGLVSClass ui;
;

#endif // QTOPENGLVS_H

已编辑 ui_qtopenglvs.h:

/*******************************************************************************    *
** Form generated from reading UI file 'qtopenglvs.ui'
**
** Created by: Qt User Interface Compiler version 5.5.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

#ifndef UI_QTOPENGLVS_H
#define UI_QTOPENGLVS_H

#include <QtCore/QVariant>
#include <QtWidgets/QAction>
#include <QtWidgets/QApplication>
#include <QtWidgets/QButtonGroup>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QHeaderView>
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QSpacerItem>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>
#include "qtopenglvs.h"

QT_BEGIN_NAMESPACE

class Ui_QTOpenGLVSClass

public:
    QWidget *centralWidget;
    QHBoxLayout *horizontalLayout;
    QTOpenGLVS *widget;
    QVBoxLayout *verticalLayout;
    QSpacerItem *verticalSpacer;
    QPushButton *pushButton;

void setupUi(QMainWindow *QTOpenGLVSClass)

    if (QTOpenGLVSClass->objectName().isEmpty())
        QTOpenGLVSClass->setObjectName(QStringLiteral("QTOpenGLVSClass"));
    QTOpenGLVSClass->resize(834, 552);
    centralWidget = new QWidget(QTOpenGLVSClass);
    centralWidget->setObjectName(QStringLiteral("centralWidget"));
    horizontalLayout = new QHBoxLayout(centralWidget);
    horizontalLayout->setSpacing(6);
    horizontalLayout->setContentsMargins(11, 11, 11, 11);
    horizontalLayout->setObjectName(QStringLiteral("horizontalLayout"));
    widget = new QTOpenGLVS(centralWidget);
    widget->setObjectName(QStringLiteral("widget"));
    QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
    sizePolicy.setHorizontalStretch(0);
    sizePolicy.setVerticalStretch(0);
    sizePolicy.setHeightForWidth(widget->sizePolicy().hasHeightForWidth());
    widget->setSizePolicy(sizePolicy);

    horizontalLayout->addWidget(widget);

    verticalLayout = new QVBoxLayout();
    verticalLayout->setSpacing(6);
    verticalLayout->setObjectName(QStringLiteral("verticalLayout"));
    verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding);

    verticalLayout->addItem(verticalSpacer);

    pushButton = new QPushButton(centralWidget);
    pushButton->setObjectName(QStringLiteral("pushButton"));

    verticalLayout->addWidget(pushButton);


    horizontalLayout->addLayout(verticalLayout);

    QTOpenGLVSClass->setCentralWidget(centralWidget);

    retranslateUi(QTOpenGLVSClass);
    QObject::connect(pushButton, SIGNAL(clicked()), QTOpenGLVSClass, SLOT(close()));

    QMetaObject::connectSlotsByName(QTOpenGLVSClass);
 // setupUi

void retranslateUi(QMainWindow *QTOpenGLVSClass)

    QTOpenGLVSClass->setWindowTitle(QApplication::translate("QTOpenGLVSClass", "QTOpenGLVS", 0));
    pushButton->setText(QApplication::translate("QTOpenGLVSClass", "Quit", 0));
 // retranslateUi

;

namespace Ui 
   class QTOpenGLVSClass: public Ui_QTOpenGLVSClass ;
 // namespace Ui

QT_END_NAMESPACE

#endif // UI_QTOPENGLVS_H

【问题讨论】:

【参考方案1】:

缺少QWidget 的包含,因此在qtopenglvs.h 中无法识别。

添加

#include <QWidget>

qtopenglvs.h 标头。

看起来好像您删除了问题的代码,因为widget 可能存在另一个问题,此处不存在。

编辑: 该代码包含一个无法正常工作的循环依赖项(包括 A.h 中的 B.h 和 B.h 中的 A.h)。我不完全知道您想要实现什么,因为从构造函数调用 setupUi 并创建一个新的 QTOpenGLVS(它再次调用构造函数),它将以无限递归结束。目前看起来好像每个QTOpenGLVS 都应该有一个QTOpenGLVS 作为孩子?

【讨论】:

我添加了它,但它仍然显示相同的错误:( 我真的不知道它有什么问题。当我用这个类提升小部件时,我得到了错误,如果我将它降级而不是它没关系......所以错误就在这些类中的某个地方 也可能是ui_qtopenglvs.h 的问题。错误发生在构造函数声明行中是对的吗? 哇,我现在检查了错误,是的,它在声明中。第一个错误从这里开始; QTOpenGLVS *widget; 这(正如答案中已经说过的)不是您发布的代码的一部分。那么我们应该如何帮助您呢?

以上是关于vs+opencv+qt 出现错误:应用程序无法正常启动(0xc000007b)的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV2.4.9 Qt5.3.1 开发环境配置错误原因与解决方案

OpenCV2.4.9 With Qt5.3.1 开发环境配置问题解决篇

vs2010+qt4编译出现error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject等错误

Opencv项目在VS2010安装与部署出现问题

Qt Creator 链接器错误:LNK1104:无法打开文件“opencv_core249d.lib”

为啥在带有 QT 的 VS 中出现这些错误 C2134、C4430 等?