2011-08-15 20 views
10

का कारण बनता है मैं अपने खेल को ग्लूट से एसडीएल में माइग्रेट करने जा रहा था।बस एसडीएल हेडर सहित लिंकर त्रुटि

यह पूरी तरह से ग्लूट में काम कर रहा है लेकिन मैं कुछ एसडीएल सुविधाओं का उपयोग करना चाहता था।

तो मैं अपने प्रोजेक्ट गुण में जाने मैं प्रोग्राम है जो संकलित किया जाएगा, चरणों का निर्माण क्लिक करें लक्ष्य शीर्षक के अंतर्गत,, पुस्तकालयों के साथ बाइनरी लिंक, SDL.framework जोड़ने

ठीक उसी रूप में मैं ओपन के लिए किया है .framework और GLUT.framework

हालांकि मैं जब जोड़ें: #include <SDL/SDL.h> यह एक लिंकर त्रुटि के साथ आता है जब मैं बनाने की कोशिश:

Undefined symbols for architecture x86_64: 
    "_main", referenced from: 
     __start in crt1.o 
    (maybe you meant: _SDL_main) 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

बस Googling एक निष्पक्ष कुछ परिणामों की ओर जाता है, लेकिन कोई वास्तविक स्पष्टीकरण।

उत्तर

8

एसडीएल आपके main(..) का नाम बदलने के लिए एक मैक्रो का उपयोग करता है और इसे स्वयं ही आपूर्ति करना चाहिए, आमतौर पर SDLmain.m में लागू किया जाना चाहिए। इसे एसडीएल.फ्रेमवर्क के साथ एक साथ आपूर्ति की जानी चाहिए।

जब आप http://www.libsdl.org/download-1.2.php से ढांचे को डाउनलोड करते हैं तो devel-lite फ़ोल्डर में ReadMeDevLite.txt पढ़ें।

एक अन्य विवरण http://www.meandmark.com/sdlopenglpart2.html

+0

मै मैक आधारित विकास के लिए नया हूं, यह भी सुनिश्चित नहीं है कि एक। एम फ़ाइल क्या है, क्या आप समझा सकते हैं कि मैं ऐसी चीजों को हल करने के बारे में कैसे जाउंगा? – Blam

+2

@ ब्लैम, ए। एम फ़ाइल एक उद्देश्य-सी फ़ाइल है। एसडीएल का मैक संस्करण उद्देश्य-सी में लिखा गया है। अपनी परियोजना में फ़ाइलों को SDLMain.h और SDLMain.m जोड़ें। उनमें गोंद कोड होता है जिसे आपको मैक ओएस एक्स पर एसडीएल ऐप्स को संकलित करने की आवश्यकता होती है। –

2

मैं ने पाया है कि जब मैं त्रुटि मिलती है: वास्तुकला x86_64 के लिए

अपरिभाषित प्रतीक:
"_main", से संदर्भित:
अंतर्निहित प्रविष्टि/मुख्य निष्पादन के लिए शुरू
(शायद आप का मतलब है: _SDL_main)

मैं प्रोजेक्ट -> बिल्ड चरण -> संकलन स्रोतों पर जाना भूल गया हूं और सूची में SDLMain.m जोड़ें। इसने मुझे तुरंत समस्या हल कर दी।

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