मेरा एप्लिकेशन यूनिट परीक्षण सिम्युलेटर में चलते समय परीक्षण और परीक्षण करता है, लेकिन डिवाइस के निर्माण और परीक्षण करते समय लिंकर त्रुटि के साथ विफल रहता है।एक्सकोड यूनिट टेस्ट - डिवाइस के लिए निर्माण करते समय लिंक त्रुटि
अपने आवेदन लक्ष्य पर मैं निम्नलिखित निर्माण सेटिंग्स निर्धारित किया है:
DEPLOYMENT_POSTPROCESSING = NO
GCC_SYMBOLS_PRIVATE_EXTERN = NO
मेरी इकाई परीक्षण पर मैं निर्माण निम्न सेटिंग्स निर्धारित किया है:
BUNDLE_LOADER = $(BUILT_PRODUCTS_DIR)/<app name>.app/<app>
TEST_HOST = $(BUNDLE_LOADER)
लिंकर त्रुटि है:
Undefined symbols for architecture armv7s:
"_<An NSString * const>", referenced from:
-[UnitTestClassA setUp] in UnitTestClassA.o
"_<Another NSString * const>", referenced from:
-[UnitTestClassB helperMethod:] in UnitTestClassB.o
-[UnitTestClassB anotherHelperMethod:] in UnitTestClassB.o
ld: symbol(s) not found for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)
... मेरे पास एक्सकोड की वरीयताओं में "बिल्डिंग त्रुटियों के बाद जारी है" चालू है, लेकिन मुझे रिसी नहीं है एनएसएसटींग * कॉन्स के बारे में शिकायत करने वाले लिंकर त्रुटियों का एक टन है। अगर मैं कुछ गलत कर रहा हूं, तो मैं अपने उत्पादन कोड में स्ट्रिंग स्थिरांक का उपयोग करने के बाद से मुट्ठी भर से अधिक लिंक त्रुटियों की अपेक्षा करूंगा।
मैं इस तरह मेरी स्ट्रिंग स्थिरांक बना रहा हूं:
ज फ़ाइल ...
extern NSString * const ReallyGoodString;
मीटर फ़ाइल ...
NSString * const ReallyGoodString = @"This string is great!";
... .m फ़ाइल उत्पादन कोड है, और मेरे आवेदन लक्ष्य का हिस्सा है, और इसलिए मुझे इसे यूनिट टेस्ट बंडल में लिंक करने की आवश्यकता नहीं है।
तो, यहां क्या हो रहा है? सिम्युलेटर में यह ठीक क्यों काम करता है, डिवाइस पर नहीं?
मैंने sample project to Github पोस्ट किया है जो समस्या को दर्शाता है। आप नमूना प्रोजेक्ट में देख सकते हैं कि यह समस्या असंगत है: कुछ प्रतीकों को ठीक से जोड़ता है अन्य लोग नहीं करते हैं।
क्या आपने कभी यह पता लगाया है? मुझे एक ही समस्या है। यहां तक कि अजनबी, यह पहले ठीक काम करता था, और लिंकर केवल हेडर फ़ाइल में एक स्ट्रिंग स्थिरता की शिकायत कर रहा है, जिससे अन्य प्रतीकों को ठीक लगता है। –
@ जोनग्राल ने इसे अभी तक नहीं देखा है – edelaney05