में संदर्भित मैं एक समारोह के एक .c
फाइल में परिभाषित (माना funcs.c) है।unresolvable प्रतीक 'नाम' अभिव्यक्ति
और मैं एक और .c
फ़ाइल (main.c) इस समारोह का उपयोग करता है जो संकलन कर रहा हूँ, और मैं कमांड लाइन में प्रतीक नाम सेट कर रहा हूं:
gcc -Wl,--just-symbols=symbolsfile.txt main.c -o main -lname
symbolsfile.txt:
0:symbolsfile.txt:1: unresolvable symbol 'funName' referenced in expression
symbolsfile.txt:2: unresolvable symbol 'expression2' referenced in expression
collect2.exe: error: ld returned 1 exit status
FunSym = funName;
Symbol2 = expression2;
...
लेकिन मैं इस जोड़ने त्रुटि मिल रही है
मैंने funcs.c में एक फ़ंक्शन घोषणा जोड़ने की कोशिश की (मेरे पास .h
फ़ाइल नहीं है), लेकिन यह कोई चीज़ नहीं बदली।
अगर मैं FunSym = funName
FunSym = garbage
करने, त्रुटि परिवर्तन करने के लिए बदल "अपरिभाषित प्रतीक ...", तो मैं अभिव्यक्ति funName
लगता है पाया जाता है।
अद्यतन:
मैं main.c के शीर्ष पर या एक अलग हेडर फाइल टिप्पणियों में सुझाव के रूप में में extern void *funName();
जोड़ने की कोशिश की है, लेकिन यह समस्या (एक ही त्रुटि) का समाधान नहीं किया। क्या ध्वज --just-symbols
को main.c
संकलित करने या लाइब्रेरी को संकलित/लिंक करने में जोड़ा जाना आवश्यक है (libname.so)?
आप अपने साझा लिब के लिए इंटरफेस के साथ एक हेडर फाइल मिला है तो इस तरह पुस्तकालय संकलन? क्या lib पहुंच योग्य है: शायद आपको '-L' विकल्प जोड़ना होगा? – LPs
'-lname.so' ->' -lname' – LPs
@ एलपीएस हाँ यह पोस्ट में एक टाइपो है (अभी तय)। मैं वास्तव में '-lname' लिखता हूं। और हाँ यह पहुंच योग्य है। (मेरे पास '-L' है) –