1

我是 Qt 的新手。虽然我已经安装了 4.8.3 很长时间,但我昨天开始编写我的第一个 Qt 程序。我在 windows 环境下,并为我的 C++ 代码使用 CodeBlocks。

我按照 Qt 编程这本书,并尝试重现书中的示例。第二章出现了问题,当时需要单独编译。我从来没有用 CodeBlocks 成功地单独编译过,这次也不例外:我仍然收到“对 XXX 的未知引用”。

我试图在网上找到所有指令,但我仍然无法解决它(设置 qmake、链接等)特别是当我使用 qmake 并将 makefile 标记为自定义文件时,每当我编译我的程序时,CodeBlocks 告诉我该项目还没有建成;当我单击“是”构建程序时,弹出相同的“尚未构建”通知,并重复该过程。

我曾经怀疑我的 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:我没有线索,有什么可以我怎么解决问题?我不介意删除我的 CodeBlocks 和 Qt 并在它们工作时重新安装,但我已经尝试过了,但没有用。

我的第二个问题:(解决了)然后我尝试使用Qt Creator。当我编译上面显示的简单程序时,我收到很多关键字“unwind_resume”的错误 - 谁能告诉我如何解决它?(网上评论建议运行qtvar.bat,但没有帮助;有人建议构建调试库,我尝试过但由于内存不足而意外停止?)

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

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

更新 - 更多信息:实际上我对 CodeBlocks 也有类似的未定义参考。但是我很懒,所以我只是将所有 .dll 文件从 qt 文件夹复制到 SysWOW64;昨天程序确实编译并运行了,但是在我今天重新安装 qt 和 codeblocks 后程序因运行时错误而崩溃,即使我也复制了新的 .dll 文件。说清楚点:如果我将 .dll 文件复制到 SysWOW64,Codeblocks 可以编译程序,但现在程序崩溃了,不像昨天程序运行正常。)

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

4

1 回答 1

0

好的,让我们在这里回顾一下,并停止在评论后连接评论。

对于您的第一个问题,我们清除了任何先前编译的构建文件夹,只留下所需的文件,即:.cpp文件、.h/hpp文件和.pro文件(以及您可能需要的任何资源文件,本示例并非如此)。

然后从终端/cmd手动编译你可以构建项目:

qmake.exe -project <PATH_TO_NEEDED_FILES>
qmake
make

现在,关于运行时错误的第二个问题和Entry Point Not Found......好吧,我一无所知。谷歌了一下,我发现Entry Point错误的最常见原因Qt是链接到旧版本的 dll:

入口点错误 1

入口点错误 2

入口点错误 3

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

希望有经验的朋友帮忙!!

于 2012-12-21T09:02:34.120 回答