मैं स्थिर पुस्तकालय विकसित कर रहा हूं जो स्क्रीनशॉट लेता है, और उन्हें ओपनजीएल अनुप्रयोगों से ले जाने के लिए विशेष हैंडलिंग की आवश्यकता होती है।कमजोर लिंकिंग सी फ़ंक्शन
जब क्लाइंट एप्लिकेशन मेरी स्थिर लाइब्रेरी से लिंक करता है तो उसे अपनी लाइब्रेरी द्वारा उपयोग किए गए ढांचे को जोड़ना होगा, उदाहरण के लिए ओपनजीएल स्क्रीनशॉट लेने के लिए, भले ही क्लाइंट ऐप ओपनजीएल का उपयोग नहीं कर रहा हो, इसे ओपनगलएस.फ्रेमवर्क से लिंक करना होगा जो खराब है। मैं लाइब्रेरी में जांचने की कोशिश कर रहा हूं अगर क्लाइंट ने OpenGLES.framework से जुड़ा हुआ है और गतिशील रूप से ओपनजीएल से स्क्रीनशॉट लेने में सक्षम है।
समस्या है जब मैं की तरह सी कार्यों का उपयोग करने की कोशिश मैं संकलन त्रुटि मिलती है:
if(&glReadPixels != NULL) {
glReadPixels(0, 0, size.width, size.height, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
}
आप देख सकते हैं, मैं विधि होने की जाँच कर सकते हैं, लेकिन मैं इसे कैसे आह्वान करते लिंकर त्रुटि का कारण नहीं करने के लिए ? जब मैं अपने पुस्तकालय के साथ ग्राहक संकलन मैं इस मिल:
Undefined symbols for architecture i386:
"_glReadPixels", referenced from:
+[TakeScreenshotUtil takeOpenGLScreenshotWithContext:layerSize:] in libScr-iOS.a(TakeScreenshotUtil.o)
मैं
__attribute__ ((weak))
उपयोग करने के लिए कोशिश कर रहा हूँ, लेकिन यह काम नहीं करता है (कुछ भी नहीं बदलता है)।
OpenGLES.framework के विरुद्ध लिंक क्यों खराब है? –
यदि मैं इसका उपयोग नहीं करता हूं तो मैं क्लाइंट ऐप्स को इसके साथ लिंक करने के लिए मजबूर नहीं करना चाहता हूं। –