2013-08-23 6 views
7

मैं अपने प्रोग्राम को बनाने के लिए लिनक्स x86_64 मशीन का उपयोग कर रहा हूं। मैंने एक साझा लाइब्रेरी को निष्पादन योग्य से जोड़ा है। मेरी प्रोजेक्ट में मैं एक फ़ंक्शन कॉल कर रहा हूं जिसने फ़ंक्शन के अंदर vector<string> घोषित किया है। जब उस समारोह को बुलाया जाता है तो मेरा कार्यक्रम मारे जाते हैं। जब नीचे जीडीबी के माध्यम से डीबगिंग होता है तो मुझे आउटपुट मिलता है।कार्यक्रम सिग्नल सिग्नल प्राप्त हुआ, अवैध निर्देश

Program received signal SIGILL, Illegal instruction. 
0x00002aaaac4d2be7 in OC_Catalog_c::File_ToText (this=0x611aa0) at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:87 
87    : _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0) 
(gdb) bt 
0 0x00002aaaac4d2be7 in OC_Catalog_c::File_ToText (this=0x611aa0) at /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:87 

क्या मेरी साझा लाइब्रेरी के संकलन का यह मुद्दा है ?? मेरे सिर पर पर्याप्त टक्कर लगी। कृपया मदद करे।

-Chaks

आपके प्रश्नों के लिए और अधिक जानकारी जोड़ना: हाँ, समारोह है कि मैं File_ToText बोल रहा हूँ वर्ग OC_Catalog_c में एक आभासी कार्य है। अन्य वर्ग के एक सदस्य चर में कक्षा OC_Catalog_c की ऑब्जेक्ट है जिसमें वर्चुअल फ़ंक्शन File_ToText भी है। उस ऑब्जेक्ट का उपयोग करके मैं वर्चुअल फ़ंक्शन File_ToText से OC_Catlog_c के File_ToText फ़ंक्शन को कॉल कर रहा हूं।

class Oc_Catalog_c 
{ 
    virtual vector<string> File_ToText    (void) const; 
} 

class B 
{ 
    const OC_Catalog_c*   m_pCatalog; 
    virtual vector<string> File_ToText    (void) const; 
} 

vector<string> B::File_ToText(void) const 
{ 
    vector<string> a_SubData; 
    a_SubData = m_pCatalog->File_ToText(); 
} 
+0

स्टार्टर के लिए स्निपेट चिपकाने के साथ शुरू करें, और लाइब्रेरी के बारे में और बताएं। – lpapp

+0

g ++ के साथ संकलन करते समय आप किन विकल्पों का उपयोग करते हैं? क्या आप साझा लाइब्रेरी भी बना रहे हैं या क्या आप इसे कहीं और प्राप्त कर चुके हैं? – idfah

+0

यह जानना भी उपयोगी हो सकता है कि आप किस प्रोसेसर पर चल रहे हैं, और आप कौन सी लिनक्स डिस्ट्रो और संस्करण का उपयोग कर रहे हैं। – cordoro

उत्तर

9

आप अपने सभी की मदद के लिए लोगों को धन्यवाद: मैं एक कोड का टुकड़ा दिखाई देगा। मुझे अंत में समस्या का पता चला जो इस त्रुटि का कारण बन रहा था।
अधिक डिबगिंग और निर्देश का पता लगाने में मैंने पाया कि प्रोग्राम ud2a निर्देश में विफल रहा था।
मैं एक चेतावनी "चेतावनी: गैर पॉड प्रकार 'struct sqlrw_request_cb' के माध्यम से '...' की वस्तुओं पारित नहीं कर सकते हैं, कॉल रनटाइम पर रद्द कर देगा" अनदेखी की गई थी।
इन चेतावनियों को हल करने से सिगिल से संबंधित मेरी समस्या ठीक हो गई।
इस लिंक पर अधिक स्पष्टीकरण: ud2a instruction causing SIGILL

+0

लिंक के लिए धन्यवाद। हमें बहुत समय बचाया। – naab

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