簡體   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