繁体   English   中英

“内部错误:在psymtab中读取pc 0x0,但在symtab中未读取。”尝试实现简单MVC时QT中出现错误

[英]“Internal error: pc 0x0 in read in psymtab, but not in symtab.” error in QT while trying to implement simple MVC

我正在尝试在QT中实现一个简单的MVC。 目标是拥有一个渲染小部件,一个模型和一个控制器。 该控制器将是带有“ render”方法的抽象基类,因此每个控制器都知道如何在要绘制的东西上绘制其模型。 我已经建立了一个非常简单的示例来说明我要完成的工作,但是在调试时,几乎立即显示以下错误:

内部错误:在psymtab中读取了pc 0x0,但在symtab中没有读取。

我已尽力减少重现该错误。 尽管代码将运行并退出,并显示以下内容,但是尝试创建RenderWidget会导致一些错误,包括分段错误崩溃(在调试模式下)。

任何帮助,将不胜感激。 我在下面提供了重现此错误所需的最少代码。 这是在没有表格的空QT Widget项目中完成的。

更新1

我花了更多时间来解决这个错误,并进一步缩小了范围。 根据Mitch的建议,我将代码进行了进一步的缩减,并将其全部移动到一个Main.cpp文件中。 如果在Main方法中放置一个断点并进入MainWindow构造函数,则会出现错误。

Main.cpp的

#include <QApplication>
#include <QWidget>
#include <QMainWindow>

class RenderWidget : public QWidget
{
    Q_OBJECT
public:
    explicit RenderWidget(QWidget *parent = 0);
};

RenderWidget::RenderWidget(QWidget *parent) :
    QWidget(parent)
{
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    RenderWidget* m_renderArea;
};

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    m_renderArea = new RenderWidget(this);
}

MainWindow::~MainWindow()
{

}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

#include "main.moc"

看来问题出在我安装的QT版本或我正在使用的调试器上。 即使我创建了一个新项目,该问题仍然存在。 安装QT 5.3并获取Windows调试工具的最新版本后,该错误似乎消失了。

您应该在Controller中删除或实现您的构造函数:

//Controller();

要么

Controller() {}

此外,在ControllerA ,您还应该调用基类:

ControllerA::ControllerA()
   : Controller()
{
}

最后, ui_renderArea未初始化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM