2011-04-29 50 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命令提示符來構建和運行可執行文件。

謝謝!