2011-04-29 107 views
0

我试图运行一个简单的示例程序Qt dialog example。 我使用cmake和nmake编译它,但运行后我得到:无法运行简单的Qt示例程序,模糊错误

无法正确启动应用程序(0xc0150002)。单击确定关闭该应用程序。

我使用的main.cpp中:

#include <QApplication> 
#include "dialog.h" 


int main(int argc, char *argv[]) 
{ 
    QApplication app(argc, argv); 
    Dialog dialog; 
    return dialog.exec(); 
    } 

我可以得到工作的最简单的事情是

#include <QApplication> 
#include <iostream> 
#include "dialog.h" 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
    cout << "test!" << endl; 
    // QApplication app(argc, argv); 
    // Dialog dialog; 
    //return dialog.exec(); 
    return 0; 
    } 

所以我不能用什么Qt相关,关于如何解决这个问题的任何想法?

谢谢!

+0

你可以显示CMakeLists.txt吗? – 2011-04-29 10:03:38

+0

你能提供一些关于你的环境的更多细节吗?什么OS?你如何构建它(命令行,Qt-Creator等)?你如何运行它(从新的命令提示符启动,双击文件夹,从Qt-Creator启动等)? – jwernerny 2011-04-29 18:17:45

回答

2

这可能是你的Qt DLL在程序启动时找不到。

您可以通过从Qt的Bin文件夹复制Qt dll文件到您的程序可执行文件所在的文件夹来检查。

或者将PATH系统变量设置为包含Qt库所在的文件夹,Windows下的dll。

如果你在windows下,那么你可以使用一个工具。

Depedency沃克,启动它,启动“Visual Studio命令提示符”,然后键入“依赖”

将&放下你的应用程序文件的依赖学步车,你应该看到的DLL文件无法加载。

请注意,该程序并不总是准确,但在你的情况下,它应该工作。

0

我使用了该工具,发现几个dll似乎不见了。这些是MSVCP90D.DLL,MSVCR90D.DLL,GPSVC.DLL,IESHIMS.DLL。

经过一些Google搜索后,似乎问题可能是使用VS2010与VS 2008预编译的Qt二进制文件。现在我重新编译了与VS 2010的Qt,但问题仍然相同。

但是,当重新编​​译时,我也编译了一些例子,包括我试图运行的例子。似乎Qt编译的例子运行完美,但我自己的编译版本不断给出相同的错误和dll的仍然丢失..

这是怎么可能的,我编译与相同的Qt包括/二进制目录?

问的信息: 的的CMakeLists.txt:

cmake_minimum_required(第2版。6) PROJECT(测试)

FIND_PACKAGE(的Qt4) INCLUDE($ {QT_USE_FILE}) ADD_DEFINITIONS($ {QT_DEFINITIONS})

LINK_LIBRARIES($ {QT_LIBRARIES})

集(all_SOURCES主的.cpp) QT4_AUTOMOC($ {} all_SOURCES) add_executable(测试$ {} all_SOURCES) target_link_libraries(测试 $ {} LINK_LIBRARIES)

我在Windows 7上使用Visual Studio 2010。我使用VS2010命令提示符来构建和运行可执行文件。

谢谢!