Xcode को C++ स्थैतिक लाइब्रेरी नहीं मिल रहा है



swift linker (1)

इसलिए मुझे इससे पहले कुछ समस्याएं थीं, लेकिन मैंने अपने पुराने प्रश्न को हटा दिया और इसे इस पर अपडेट किया। ये रहा:

मैं अपने आईओएस स्विफ्ट प्रोजेक्ट में सी ++ लाइब्रेरी का उपयोग करना चाहता हूं इस समुदाय की मदद से मैंने अपनी लाइब्रेरी को स्थैतिक पुस्तकालय (.ए फाइल) के रूप में संकलित किया। अब मैंने यह परीक्षण करने के लिए एक नई परियोजना बनाई और मैंने केवल निम्न चरणों का पालन किया:

1. नया स्विफ्ट प्रोजेक्ट बनाएं

2. बिल्ड चरणों के तहत -> पुस्तकालयों के साथ लिंक बाइनरी मेरी लाइब्रेरी ( जैसे ) जोड़ने

3. हेडर फ़ाइल के बिना एक नई सी + + फाइल जोड़ें और निम्नलिखित सामग्री के साथ एक ब्रिजिंग हैडर जोड़ें :

//Wrapper.cpp

extern "C" void test()
{
    //Just to test the swift - c++ connection later this file 
    //shall import the main header of the library.
}

// सीएएस टेस्ट-ब्रिजिंग-हेडर एच

void test();

लेकिन अब, जब मैं संकलन करता हूं तो मुझे यह त्रुटि मिलती है (आप बाएं ओर भी मेरी प्रोजेक्ट पदानुक्रम देख सकते हैं)।

अग्रिम में आपकी सभी सहायता के लिए धन्यवाद!


Xcode को लाइब्रेरी को खोजने के लिए, आपके पास कम से कम दो विकल्प हैं:

  1. बिल्ड सेटिंग के अंतर्गत लाइब्रेरी खोज पथ सेट करें यह गड़बड़ हो सकता है क्योंकि आपको यह सुनिश्चित करना है कि आप सही आर्किटेक्चर के लिए लाइब्रेरी बनाते हैं, उदाहरण के लिए सिम्युलेटर या वास्तविक उपकरण, और उचित पथ का उपयोग करें

  2. एक नया कार्यस्थान बनाएं, कार्यस्थान पर लाइब्रेरी प्रोजेक्ट और ऐप प्रोजेक्ट दोनों जोड़ें। ऐप लक्ष्य के लिए बिल्ड अवस्था में उस स्टैटिक लाइब्रेरी (.ए) फाइल का चयन करें जो आपके द्वारा क्लिक किए जाने के बाद पॉप अप करता है + लिंक बाइनरी में लाइब्रेरी सेक्शन के साथ साइन इन करें। Xcode सही वास्तुकला के लिए पुस्तकालय का निर्माण करेगा और सही स्थैतिक लिब के साथ ऐप को लिंक करेगा।

अब, सही आर्किटेक्चर के लिए लाइब्रेरी बनाना मुश्किल हो सकता है, भले ही आप विकल्प 1 या 2 ऊपर चुनते हैं। कोशिश करने के लिए कुछ चीजें:

  • Xcode में एक बाहरी बिल्ड सिस्टम प्रोजेक्ट बनाएं और मेकफाइल का उपयोग करें जो पुस्तकालय स्रोत के साथ आया था। (फ़ाइल -> नया -> परियोजना ... -> क्रॉस-प्लेटफॉर्म।)
  • Xcode में एक कोको टच स्टेटिक लाइब्रेरी प्रोजेक्ट बनाएं (फ़ाइल -> नया -> परियोजना ... -> आईओएस।) आपको परियोजना के लिए पुस्तकालय स्रोत जोड़ने की आवश्यकता होगी। शायद यह आपकी सर्वश्रेष्ठ शर्त है यदि पुस्तकालय का निर्माण बहुत जटिल नहीं है

आपके स्विफ्ट प्रोजेक्ट में सीधे सी ++ लाइब्रेरी स्रोत को शामिल करने का विकल्प भी है

देखें कि यह पोस्ट सहायक दिखाई देती है: आईओएस परियोजना के साथ उपयोग करने के लिए बाह्य सी ++ पुस्तकालय संकलित करना





linker