2010-11-10 18 views
8

पर क्यूटी के साथ काम नहीं करता है मुझे अजीब समस्या का सामना करना पड़ रहा है। अर्थात्, क्यूटी किसी भी तरह से मेरे कार्यक्रम में अपवाद हैंडलिंग बंद कर देता है। मैं कोई अपवाद नहीं पकड़ सकता, और जब मैं अपवाद अनुप्रयोग क्रैश फेंक देता हूं।अपवाद हैंडलिंग विंडोज

मैं विंडोज 7 (64 बिट) पर क्यूटी एसडीके v2010.05 से क्यूटी 4.7.0 (32 बिट) का उपयोग कर रहा हूं, जीजीजी, नेटबीन 6.9.1 से जी ++ (जीसीसी) 4.5.1। लेकिन मैंने इसे जी ++ 3.4.5 (मिनजीडब्ल्यू से भी) और क्यूटी निर्माता 2.0.1 - एक ही अजीब व्यवहार के साथ भी चेक किया।

उदाहरण (सबसे सामान्य स्थिति) के लिए:

अपवाद से पहले

इस आवेदन क्रम का अनुरोध किया है समाप्त करने के लिए:

#include <Qt/QApplication.h> 
#include <iostream> 
#include <stdexcept> 
#include <cstdlib> 

using namespace std; 


int main(int argc, char* argv[]) { 
    QApplication app(argc, argv); 

    try { 
     cout << "Before exception" << endl; 
     throw runtime_error("Exception occured"); 
     cout << "After exception" << endl; 
    } catch (runtime_error& exc) { 
     cout << exc.what() << endl; 
     exit(1); 
    } 

    return 0; 
} 

मैं इस उत्पादन मिल गया है जब मैं कार्यक्रम ऊपर निष्पादित यह एक असामान्य तरीके से है।
अधिक जानकारी के लिए कृपया एप्लिकेशन की सहायता टीम से संपर्क करें।

मैंने जी ++ में ध्वज "-फिक्सेप्शन" जोड़ने की कोशिश की है लेकिन इसमें कुछ भी नहीं बदला है।

जब मैं क्यूटी का उपयोग नहीं करते, सब कुछ ठीक है:

#include <Qt/QApplication.h> // It is not caused only by including Qt header 
          // so it doesn't matter if I comment this out or not 
#include <iostream> 
#include <stdexcept> 
#include <cstdlib> 

using namespace std; 


int main(int argc, char* argv[]) { 
    // QApplication app(argc, argv); 

    try { 
     cout << "Before exception" << endl; 
     throw runtime_error("Exception occured"); 
     cout << "After exception" << endl; 
    } catch (runtime_error& exc) { 
     cout << exc.what() << endl; 
     exit(1); 
    } 

    return 0; 
} 

उत्पादन:

इससे पहले कि अपवाद
अपवाद हुई

किसी को भी पता है कि ऐसा क्यों है ऐसा तरीका है और इसे कैसे ठीक किया जाए? क्यूटी के निर्माण के दौरान उपयोग किए जाने वाले अपवाद हैंडलिंग विधि (एसजेएलजे या बौने -2) के प्रकार के साथ ऐसा कुछ है?

+0

Whew, तुमने मुझे डर दिया! हम शायद मेरी सिफारिश पर क्यूटी पर स्विच करने जा रहे हैं और यह एक हत्यारा होता। अच्छी बात यह वीएस के साथ काम करती है। –

+0

यह वास्तव में कहां दुर्घटनाग्रस्त हो जाता है? कोई मौका आप एक और सटीक स्थान पा सकते हैं? QAplication की अधिसूचना() शायद? – Bart

+4

शायद यह '-no-अपवाद' ध्वज के साथ कॉन्फ़िगर किया गया है। क्यूटी एसडीके को पुन: कॉन्फ़िगर करने और फिर से बनाने का प्रयास करें। –

उत्तर

8

मैं पुन: कॉन्फ़िगर और ध्वज -exceptions साथ क्यूटी कंपाइल किया है:
D:\Qt\2010.05\qt>mingw32-make confclean && configure -exceptions && mingw32-make
और अब सब कुछ ठीक है!

धन्यवाद सभी मदद के लिए, खासकर निक डी के लिए!

वैसे भी, यह बहुत अजीब बात है कि मेरे पास इस ध्वज के बिना क्यूटी निर्माण था। मैंने आधिकारिक साइट से बाइनरी फॉर्म में क्यूटी एसडीके डाउनलोड किया था।

संबंधित मुद्दे