2012-12-20 73 views
1

我是Qt的新手。虽然我已经安装了4.8.3,但是我昨天开始编写我的第一个Qt程序。我在Windows环境下,并为我的C++代码使用CodeBlocks。Qt程序无法编译/有运行时错误(IDE:CodeBlocks/QtCreator)

我跟着关于Qt编程的书,并试图重现本书的例子。问题出现在第二章,当时需要单独编译。我从来没有成功地与CodeBlocks分开编译过,这次也没有例外:我仍然收到“未知的XXX引用”。

我试图在网上找到的所有指示,但我还是没能解决它(设置QMAKE,链接等),特别是当我用QMAKE并标记生成文件自定义一个,每当我编译了一个程序,代码块告诉我,该项目尚未建成;当我点击“是”来构建程序时,弹出了相同的“未建好”通知,并且重复该过程。

我曾经怀疑我的Qt出了问题,所以我删除它并安装了最新版本(Qt5.0)。但我无法使用它,因为CodeBlocks只支持Qt4,而我的编译器不支持Qt5。

所以我试图下载“旧的”,4.8.4。然后事实证明,我甚至无法编译一个单文件程序(我的意思是整个项目中有一个.cpp文件,没有自定义标题)。我尝试了默认的代码块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和代码块后,程序崩溃,运行时错误,即使我也复制了新的.dll文件。为了清楚起见:如果我将.dll文件复制到SysWOW64,Codeblocks可以编译程序,但现在程序崩溃,与昨天程序正常运行不同。)

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

+0

调用堆栈?你有没有试过调试它? – neagoegab

+0

有一种方法可以判断CodeBlocks是否有问题:从终端编译程序。我曾经遇到类似的问题(使用QtCreator)并手工编译代码。它进展顺利,这是一个缓存问题。试试这个:'qmake -project'后跟'qmake'和'make'。然后启动二进制文件,看看是否一切按预期进行。我在MingW的Windows上尝试了代码并工作。 –

+0

unwind_resume通常是因为错误的代码块安装或项目,通常项目是责怪。 –

回答

0

好吧,让我们回顾一下,并停止评论后的评论。

对于你的第一个问题,我们清除了任何以前的编译的建筑文件夹,只留下需要的文件,我。E:.cpp文件,.h/hpp文件和.pro文件(你可能需要的任何资源文件,这是不是在这个例子的情况下沿)。

然后用手从终端编译/加利福尼亚你可以建立项目:

qmake.exe -project <PATH_TO_NEEDED_FILES> 
qmake 
make 

现在,为你的运行时错误的第二个问题和Entry Point Not Found ... 好吧,我毫无章法。 Googleing了一下,我发现了Entry Point错误的最常见原因是Qt被链接到的是旧版本的DLL:

Entry Point Error 1

Entry Point Error 2

Entry Point Error 3

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

让我们希望,任何人只要有更多的经验帮助!

+0

我会尝试......入口点错误真的很烦人。我使用的是4.8.4 dll,但并不完全令人满意。无论如何,我假设我找不到一个很好的方法来解决它,也许复制dll文件到SysWOW64是唯一的选择。 –

+0

嗨。在我的电脑中,我没有设置任何变量。我只是在Windows系统路径中有Qt bin文件夹的路径。然而,我无法确定周围没有任何联系或者任何东西,因为当我开始工作时,Qt已经安装等着我。现在我很无能。如果我想出点什么,我会让你知道的。再见! –

+0

关于运行时的最后一个问题: 当我尝试在程序中逐行删除我的代码时,我发现运行时错误从一开始就开始:'QApplication app(argc,argv);'换句话说我不能写任何Qt程序。我怎样才能捕捉异常,以便我能找到更多的线索?我尝试使用标准的'try'和'catch(exception e)cout << e.what();'但程序刚刚崩溃,我无法猜测发生了什么 –

相关问题