2011-10-07 23 views
7

मैं आई/ओ किट का उपयोग करने का प्रयास कर रहा हूं और I/O किट से ठीक से जुड़ा हुआ हूं।स्थिर कार्य Xcode में अपरिभाषित प्रतीकों को क्यों खत्म करते हैं?

जब मैं I/O किट में फ़ंक्शन का उपयोग करता हूं और इसे स्थिर फ़ंक्शन में कॉल नहीं करता, तो मुझे निम्न त्रुटि Undefined symbols for architecture x86_64 मिलती है।

यहाँ त्रुटि

static void test(void) 
{ 
    if (IORegisterForSystemPower(...)) 
    { 

    } 
} 

यहाँ एक उदाहरण है कि त्रुटि के कारण होगा है को दबाने के लिए एक उदाहरण है।

void test(void) 
{ 
    if (IORegisterForSystemPower(...)) 
    { 

    } 
} 

यह क्यों हो रहा है के बारे में कोई सुझाव?

संपादित करें:

Undefined symbols for architecture x86_64: 
    "_IORegisterForSystemPower", referenced from: 
     _registerNotificaitonUsingIOKit in AppDelegate.o 
    "_IONotificationPortGetRunLoopSource", referenced from: 
     _registerNotificaitonUsingIOKit in AppDelegate.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
+0

क्या आप त्रुटि संदेशों की पूरी सूची पेस्ट कर सकते हैं? उदाहरण के लिए यह प्रतीक IORegisterForSystemPower के बारे में शिकायत करता है? – jman

+0

मैंने त्रुटि संदेश जोड़े हैं। कृपया ऊपर देखें। – David

उत्तर

2

ठीक है, मैं एक परिदृश्य जब ऐसा हो सकता है:

यहाँ सटीक त्रुटि संदेश है। यदि स्थिर कार्य कभी नहीं कहा जाता है, तो आपको उस लिंक समय त्रुटि नहीं मिलेगी।

उदाहरण के लिए, मैं इस समारोह के साथ एक सरल सी फ़ाइल लिखा था, और undef_foobar परिभाषित नहीं है:

Undefined symbols for architecture x86_64: 
    "_undef_foobar", referenced from: 
:

static int foobar (void) 
{ 
    undef_foobar(); 
} 

अब, अगर foobar() मेरी main() से कहा जाता है, मैं त्रुटि मिलती है

यदि इस सी फ़ाइल के भीतर से फ़ंक्शन को कॉल नहीं किया गया है, तो कोई लिंकर त्रुटियां नहीं हैं।

+0

मैंने आपके उदाहरण की कोशिश की और एक्सकोड ने मुझे अपरिभाषित फ़ंक्शन 'फ़ंक्शन की लागू घोषणा' के बारे में चेतावनी दी है, undef_foobar "C99' में अमान्य है। क्या आप लिंक करने का प्रयास करना चाहते हैं और फिर I/O किट से फ़ंक्शन को कॉल करने के लिए यह देखने के लिए कि क्या आपको वही लिंकर समस्याएं मिलती हैं? – David

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

  • कोई संबंधित समस्या नहीं^_^