QT程序无法编译/具有运行时错误(IDE:CodeBlocks/QTCreator)

Qt program fails to compile/has runtime error (IDE: CodeBlocks/QtCreator)

本文关键字:IDE CodeBlocks QTCreator 运行时错误 程序 编译 QT      更新时间:2023-10-16

我是QT的新手。当我长期安装4.8.3时,我昨天开始编写我的第一个QT程序。我在Windows环境下,并为我的C 代码使用CodeBlocks。

我遵循了有关QT编程的书,并试图重现本书示例。当需要单独的汇编时,第二章出现了问题。我从来没有与CodeBlocks进行成功的单独汇编,这次也不例外:我仍然收到"未知参考XXX"。

我试图在网上找到所有说明,但我仍然无法解决(设置QMAKE,链接等),尤其是当我使用Qmake并将Makefile标记为自定义时,每当我编译我的程序时,CodeBlocks告诉我,没有建立项目;当我单击"是"以构建程序时,尚未构建"尚未构建"通知,然后重复该过程。

我曾经怀疑我的QT出了问题,因此我将其删除并安装了最新的QT(QT5.0)。但是我无法使用它,因为CodeBlocks仅支持QT4,而我的编译器不支持QT5。

所以我尝试下载"旧一个",4.8.4。然后,事实证明,我什至无法编译一个文件的程序(我的意思是整个项目中的一个.cpp文件,没有自定义的标题)。我尝试了默认的CodeBlock QT程序,这就是这样:

    #include <QApplication>
    #include <QFont>
    #include <QPushButton>
    int main(int argc, char* argv[])
    {
        QApplication app(argc, argv);
        QPushButton quit("Quit");
        quit.resize(75, 30);
        quit.setFont(QFont("Times", 18, QFont::Bold));
        QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));
        quit.show();
        return app.exec();
    }

只是一个非常标准的。它应该编译,并且确实如此,但是情况更糟:该程序在执行后立即发生运行时错误(错误代码:0xc0000005或-1073741819)这是我的问题1:我没有线索,我该怎么办来解决问题?我不介意删除我的代码块和QT,如果它们可以使用,但是我已经尝试过,但没有用。

我的第二个问题:(解决了)然后我尝试使用QT创建者。当我编译上面显示的简单程序时,我收到了很多错误的错误,其中包括" Unvind_resume" - 有人可以告诉我如何解决它吗?(在线评论建议运行qtvar.bat,但没有帮助;一些建议的建筑调试库,我尝试了,但由于记忆不足而意外停止了吗?)

我的第三个问题:(发现它是多余的,因为它已在上面讨论,所以我已删除了它)

(我应该首先要感谢真正阅读我帖子的人。我必须说,尽管提供的信息可能不足以找到解决方案,但这就是我所知道的。)

更新 - 更多信息:实际上,我也有类似的代码框架参考。但是我很懒惰,所以我只是将所有.dll文件从QT文件夹复制到SYSWOW64;程序确实编译并运行了昨天,但是在我重新安装QT和CodeBlocks之后,程序也因运行时错误而崩溃,即使我还复制了新的.dll文件。要清楚情况:如果我将.dll文件复制到SYSWOW64,则可以编译该程序,但是现在程序崩溃,与昨天的程序不同,该程序正常运行。)

更新 - 现在问题是运行时错误。

好吧,让我们在这里回顾一下,然后在评论后停止关注评论。

对于您的第一个问题,我们清除了任何先前编译的构建文件夹,仅保留所需的文件,即:.cpp文件,.h/hpp文件和.pro文件(以及您可能需要的任何资源文件,这不是情况,对于此示例)。

然后通过手工编译 从终端/CMD中构建项目:

qmake.exe -project <PATH_TO_NEEDED_FILES>
qmake
make

现在,对于您的第二个问题,关于运行时错误和Entry Point Not Found ...好吧,我毫无头绪。Google有点我发现,Entry Point错误的最常见原因是Qt正在针对旧版本DLL链接:

入口点错误1

入口点错误2

入口点错误3

在第二个链接中,通过将QT路径设置为Windows PATH中的第一个来解决问题。也许有帮助。

希望有更多经验的人有帮助!