2012-08-31 14 views
6

का उपयोग करने वाले आईओएस के लिए स्थिर लाइब्रेरी संकलित करना मैं एक साधारण क्रॉस-प्लेटफ़ॉर्म लाइब्रेरी लिख रहा हूं जो ओपनएमपी का उपयोग करता है लेकिन मैं यह नहीं समझ सकता कि इसे किसी iPhone ऐप में कैसे परीक्षण किया जाए।
मैं ओएस एक्स चल रहा हूँ, जीसीसी 4.7 साथ, मैं इसे एक स्थिर पुस्तकालय के रूप में संकलित, मैं भी libgomp.a के साथ एक साथ लिंक और Xcode में अपने परीक्षण एप्लिकेशन में जोड़ें में कामयाब रहे। एप्लिकेशन को किसी भी त्रुटि या चेतावनी के बिना बनाता है लेकिन जब मैं iPhone सिम्युलेटर में इसे चलाने के सभी मैं इस त्रुटि संदेश है:ओपनएमपी

dyld: lazy symbol binding failed: Symbol not found: ___emutls_get_address 
    Referenced from: /opt/local/lib/gcc47/i386/libgomp.1.dylib 
    Expected in: /usr/lib/libSystem.B.dylib 

dyld: Symbol not found: ___emutls_get_address 
    Referenced from: /opt/local/lib/gcc47/i386/libgomp.1.dylib 
    Expected in: /usr/lib/libSystem.B.dylib 

मैंने पढ़ा ___emutls_get_address साथ जीसीसी के पिछले संस्करणों में एक बग नहीं था, लेकिन यह होना चाहिए कि अभी तय क्या आपको पता है कि क्या गलत हो सकता है?

+0

क्या आपने अपनी हेडर फाइलें लिंक की हैं? हो सकता है कि एक "नकली" ढांचा तैयार करना जैसे ईमानदारी से पोस्टकार्ड और अन्य मदद करेंगे ... – Ondrej

उत्तर

2

यह एक गतिशील पुस्तकालय की तलाश में है जो अस्तित्व में नहीं है। चूंकि आप वास्तविक डिवाइस पर गतिशील पुस्तकालयों का उपयोग नहीं कर सकते हैं, यह डिवाइस पर विफल हो जाएगा लेकिन निर्माण के दौरान नहीं। आपको लाइब्रेरी को मैन्युअल रूप से .a फ़ाइलों के रूप में पुनर्निर्माण करने का प्रयास करना चाहिए, और सुनिश्चित करें कि आप किसी भी तर्क का उपयोग नहीं करते हैं। मेरे लिए यह सबसे अच्छा है। मान लीजिए कि यह जेलब्रोकन (संभवतः सत्य) नहीं है, आपको इसे मैन्युअल रूप से लिंक करना होगा। आप हमेशा अपनी परियोजना में पुस्तकालय कोड फ़ाइलों को जोड़ सकते हैं।

उम्मीद है कि इससे मदद मिलती है।

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