2013-07-19 11 views
6

जुड़ा हुआ है जब एक परियोजना मैं पर काम कर रहा हूँ जोड़ने, लिंकर निम्न त्रुटियों देता है:अपरिभाषित संदर्भ है, भले ही पुस्तकालय

/usr/bin/ld: ../Includes and Libs/lib/libsfml21rca.a(SoundFile.o): undefined reference to symbol '[email protected]@libsndfile.so.1.0' 

/usr/bin/ld: note: '[email protected]@libsndfile.so.1.0' is defined in DSO /usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/libsndfile.so so try adding it to the linker command line 

/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/libsndfile.so: could not read symbols: Invalid operation 

बात यह है कि पहले से ही libsndfile.so libsfml21rca से पहले जुड़ा हुआ है। ए, इसलिए मुझे नहीं पता कि समस्या कहां है।

मैं संहिता :: ब्लाकों उपयोग कर रहा हूँ 10.05

मदद के लिए धन्यवाद अग्रिम में

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

यहाँ जोड़ने आदेश है:

जी ++ एल " इसमें शामिल हैं और लिब्स/lib "-L" शामिल है और लिब्स/lib/raknet3_731 "-L" शामिल है और लिब्स/lib/d3d_new/x86 "-L" शामिल है और लिब्स/lib/ogg "-L" शामिल है और लिब्स/lib/एसडीएल "-एलबलेट/lib -o (फ़ाइल नाम) ... (ऑब्जेक्ट फाइलों का एक बहुत सारे) -lGLEW -lglfw -lGL -lGLU -lpthread -lopenal -ljpeg -lfreetype -lsndfile -lXrandr -lsfml-system -lsfml-window -lsfml-audio ../Bullet /lib/LinearMath.lib ../Bullet/lib/BulletCollision.lib ../Bullet/lib/BulletDynamics.lib "../ शामिल है और लिब्स/lib/raknet3_731/RakNetLibStaticDebug.lib" "../cludes और Libs/lib/libsfml21rca.a "../../../../../../home/msabol/Desktop/SFML/sfml2st/sfmlVideo/sfmlVideo/bin/Release/libsfmlVideo.a ../ ..

+4

जोड़ने के आदेश को बदलने का प्रयास करें? –

+0

मुझे इसे कैसे बदलना है? सब कुछ सही क्रम में जुड़ा हुआ है, या कम से कम ऐसा लगता है। – Matuzalem

+0

कमांड जोड़ें C :: B आपके प्रश्न से लिंक करने के लिए उपयोग कर रहा है। (इसे एक टिप्पणी के रूप में शामिल न करें!) – greatwolf

उत्तर

5

/../../../../home/msabol/Desktop/SFML/sfmlVideo/bin/Release/libsfmlVideo.a लिंकर केवल पुस्तकालय फ़ाइलों पर एक पास चलाता है। इसलिए यदि आपके पास लाइब्रेरी ए में कुछ है जो पुस्तकालय बी में कुछ चाहिए, तो आपको g++ objects... -llibA -llibB होना चाहिए, यदि आप g++ objects... -llibB -llibA का उपयोग करते हैं तो यह आपके द्वारा दिखाए जाने वाले तरीके से असफल हो जाएगा।

तो, अपने मामले में, के बाद -lsndfile डालें।

(और जिसका विचार यह एक "भी शामिल है और Libs" निर्देशिका में रिक्त स्थान डाल करने के लिए किया गया था - नहीं सबसे अच्छा विचार मैंने देखा है ...)

+1

मैं इसे एक शॉट दूंगा। मेरी रक्षा में, मैं कुछ दिन पहले इस परियोजना पर कूद गया, इसलिए सभी भयानक नाम (इसमें से अधिक है) मेरे द्वारा नहीं बनाए गए थे। ** संपादित करें: ** विस्फोट विनाश, यह काम किया! धन्यवाद, मैट पीटरसन। – Matuzalem

+0

@ मैट स्पष्ट रूप से, मुझे लाइब्रेरी पर एक ही पास अधिक ऑफ-डालने लगता है। 'एलडी' लिंकर की सीमा के कारण ओपी की तरह अनगिनत SO प्रश्न हैं। माइक्रोसॉफ्ट के 'LINK' टूल में उदाहरण के लिए यह समस्या नहीं है। एम्बरकेडरो के इलिंकर भी नहीं। – greatwolf

+0

@greatwolf दुर्भाग्यवश, मेरा काम यूनिक्स प्लेटफ़ॉर्म पर प्रोजेक्ट चलाने के लिए है। माइक्रोसॉफ्ट के 'लिंक' के लिए बहुत कुछ। – Matuzalem

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