สัญลักษณ์ที่ซ้ำกันสำหรับแขนสถาปัตยกรรม 64


104

เมื่อฉันพยายามเรียกใช้ Xcode Project ของฉันมันล้มเหลวด้วยข้อผิดพลาดที่ระบุว่าฉันมีสัญลักษณ์ซ้ำกัน ฉันดูออนไลน์ซึ่งพบรายการที่ซ้ำกันเหล่านี้ แต่ไม่มีโชค:

ป้อนคำอธิบายภาพที่นี่

มีความคิดอย่างไรในการแก้ไขปัญหานี้


1
หมายความว่าคุณมี BFAppLinkReturnToRefererView มากเกินไป
Andrey Chernukha

นอกจากนี้คุณอาจต้องการทำความสะอาดโครงการของคุณเล็กน้อยแทนที่จะเชื่อมโยงไปยังเฟรมเวิร์กที่อยู่บนเดสก์ท็อปของคุณ :)
picciano

ในกรณีของฉันฉันได้เพิ่ม NSString * const tColor ภายนอก ในไฟล์. h และ NSString const * tColor = @ "# 000022"; ในสองคลาส. m ที่แตกต่างกัน
ios_dev

คุณสามารถค้นหาสิ่งที่ต้องการได้ที่นี่stackoverflow.com/a/46678210/988941
MoOx

คำตอบ:


66

จากข้อผิดพลาดดูเหมือนว่า FacebookSDK.framework มีคลาส Bolts.framework อยู่แล้ว ลองลบ Bolts.framework เพิ่มเติมออกจากโครงการ


23
ทำอย่างไร? คุณช่วยแนะนำฉันทีละขั้นตอน
Imdad Ali

68

สำหรับฉันมันช่วยในการเปลี่ยนการตั้งค่าคอมไพเลอร์ "No Common Blocks" เป็น NO: ดูเหมือนว่าจะสมเหตุสมผลมากการตั้งค่ามีคำอธิบายที่นี่: GCC_NO_COMMON_BLOCKS ใช้ทำอะไร


คุณคือผู้ชาย! เพิ่งสร้าง xCode 7.3.1 โปรเจ็กต์ใหม่และค่าเริ่มต้นคือ YES :(
Yaro

4
ตัวเลือกนี้เปิดให้ฉันโดยหน้าต่าง "อัปเดตโปรเจ็กต์เป็นการตั้งค่าที่แนะนำ" ของ Xcode
commscheck

คุณดีที่สุด
showmyroutes

เคล็ดลับล้ำค่า แต่ไม่ได้ช่วยในกรณีของฉัน! : O
Fattie

49

การใช้ Xcode 8 ตัวเลือก "อัปเดตโปรเจ็กต์เป็นการตั้งค่าที่แนะนำ" จะเปิด "ไม่มีบล็อกทั่วไป" สำหรับโปรเจ็กต์ของฉัน

การเปลี่ยนกลับเป็นปิดแก้ไขทุกอย่าง


2
อัปเดตโปรเจ็กต์เป็นการตั้งค่าที่แนะนำฉันจะทำได้อย่างไร ฉันหมายถึงเมนูไหน
Sazzad Hissain Khan

@SazzadHissainKhan มันอยู่ในการตั้งค่าการสร้างของคุณ
เที่ยว

24

ฉันทำพ็อดของฉันยุ่งในขณะที่ลดระดับพ็อดและฉันได้จัดการเพื่อแก้ไขปัญหาเกี่ยวกับสัญลักษณ์ที่ซ้ำกันสำหรับสถาปัตยกรรม arm64โดยการลบพ็อดและติดตั้งอีกครั้งด้วย:

pod deintegrate
pod install

ฉันใช้ Google Places SDK ที่ผสานรวมผ่าน CocoPods - 3.9.0 และคำตอบนี้ช่วยแก้ปัญหาของฉันได้
andrewlundy

ขอบคุณคุณช่วยให้ฉันปวดหัวมาก
Vladimir Sukanica

21

สำหรับฉันมันคือการที่ฉันนำเข้าไฟล์เป็น. m ไม่ใช่. h โดยไม่ได้ตั้งใจ


นั่นคือ LOL แต่เป็นเรื่องจริง D
Vladimir

สิ่งนี้เพิ่งเกิดขึ้นกับฉัน .. ฉันตำหนิการกรอกรหัสสำหรับทุก ๆ ครั้ง
user426132

12

อีกวิธีหนึ่งคือ:

เลือกProject -> Target -> Build phase -> Compile source -> ค้นหาไฟล์ที่กล่าวถึงในบรรทัดข้อผิดพลาดสุดท้ายที่ 3 (ในกรณีของคุณBFAppLinkReturnToRefererView.o )

จากนั้นคุณจะเห็นไฟล์ 1 หรือ 2 ไฟล์ในผลการค้นหา

ลบหนึ่งของพวกเขาและรวบรวมอีกครั้ง ควรคอมไพล์ใหม่ตอนนี้เพราะเหลือไฟล์เดียวและไม่มีข้อขัดแย้งในการสร้างอีกต่อไป

หากไม่ได้ผลไฟล์อาจมีข้อผิดพลาดและคุณควรลบทั้งหมดออกแล้วคอมไพล์ใหม่ มันควรจะทำงานอีกครั้ง


2
คำตอบที่ประเมินน้อยมากขอบคุณสำหรับความช่วยเหลือของคุณ Lukas! :)
patreu22

ไม่มีปัญหาดีใจที่มันแก้ปัญหาของคุณ :)

10

ในการอัปเกรดเป็น Xcode 8 ฉันได้รับข้อความให้อัปเกรดเป็นการตั้งค่าที่แนะนำ ฉันยอมรับและทุกอย่างได้รับการอัปเดตแล้ว ฉันเริ่มได้รับปัญหาเวลาคอมไพล์:

สัญลักษณ์ซ้ำสำหรับ XXXX สัญลักษณ์ซ้ำสำหรับ XXXX สัญลักษณ์ซ้ำสำหรับ XXXX

ข้อผิดพลาด 143 รายการ ไปที่ Target-> Build settings -> No Common Blocks -> ตั้งเป็น NO วิธีนี้ช่วยแก้ปัญหาได้ ปัญหาคือโครงการที่ผสานรวมมีบล็อกรหัสเหมือนกันและด้วยเหตุนี้จึงไม่สามารถรวบรวมได้ คำอธิบายสามารถพบได้ที่นี่


9

ข้อผิดพลาดนี้เกิดขึ้นเมื่อ Linker พยายามเชื่อมโยงไฟล์ obj สาเหตุบางประการที่ฉันสามารถนึกถึงข้อผิดพลาดนี้ ได้แก่ :

  1. ฟังก์ชัน / คลาสที่ซ้ำกันถูกกำหนดไว้ที่ตำแหน่ง / ไฟล์ที่แตกต่างกันสองแห่งในโปรเจ็กต์และมีเพียงหนึ่งในนั้นเท่านั้นที่ควรคอมไพล์สำหรับรูปแบบคำสั่ง build ใด ๆ แต่อย่างใดทั้งสองไฟล์เหล่านั้นได้รวบรวมไว้ในโครงการของคุณ ดังนั้นคุณต้องตรวจสอบเงื่อนไข if-else หรือการอ้างอิงอื่น ๆ ซึ่งเพิ่มไฟล์ src ลงในรายการไฟล์ที่จำเป็นในการคอมไพล์และลบไฟล์ที่ไม่จำเป็นสำหรับคำสั่ง build ของคุณโดยเฉพาะ

  2. ฟังก์ชัน / คลาสที่ซ้ำกันถูกกำหนดโดยบังเอิญที่ตำแหน่ง / ไฟล์ที่แตกต่างกันสองแห่งในโครงการ ลบคำจำกัดความที่ไม่ถูกต้อง

  3. ทำความสะอาดไดเร็กทอรี OBJ ของคุณก่อนที่จะสร้างอีกครั้งอาจมีไฟล์ obj เก่า ๆ อยู่ในนั้นจากบิลด์ก่อนหน้าของคุณซึ่งอาจทำให้เกิดความขัดแย้งนี้

ป.ล. ฉันไม่ใช่ผู้เชี่ยวชาญ แต่นี่คือวิธีที่ฉันแก้ไขปัญหานี้เมื่อฉันเผชิญกับมัน :)


9

หากคุณกำลังจะย้ายไปที่ Xcode 7 หรือ 8 และกำลังเปิดโปรเจ็กต์เก่าจริงๆฉันพบปัญหานี้:

ใน SomeConstFile.h

NSString * const kAConstant;

ใน SomeConstFile.m

NSString *const kAConstant = @"a constant";

คอมไพลเลอร์เวอร์ชันก่อนหน้านี้สันนิษฐานว่านิยามในไฟล์ส่วนหัวเป็นภายนอกดังนั้นการรวม SomeConstFile.h ทั้งหมดก็ใช้ได้

ตอนนี้คุณต้องประกาศ const เหล่านี้อย่างชัดเจนว่าเป็นภายนอก:

ใน SomeConstFile.h

extern NSString * const kAConstant;

1
ขอบคุณสำหรับสิ่งนี้! กำลังประสบปัญหากับไฟล์ constants.h ที่ฉันกำลังสร้าง lol
Sung Min Kim

1
ขอบคุณสำหรับคำตอบที่ฉันประสบปัญหาเดียวกันและคำตอบของคุณก็ใช้ได้ผลสำหรับฉัน ...
reetu

1
ขอบคุณฉันต่อสู้กับปัญหานี้มา 3-4 ชั่วโมงที่ผ่านมา
Sumit Kumar Saha

9

ด้านล่าง Patch ทำงานให้ฉัน .. :)

Step 1: Go to TARGETS -> Build Settings -> No Common Blocks -> No

Step 2: Go to TARGETS -> Build Settings -> enable testability -> No

การตั้งค่ากลับเป็น NO ช่วยแก้ปัญหาได้!


2
ขั้นตอนที่ 2: แก้ไขปัญหาของฉัน ขอบคุณ :)
Dorald

2

บางครั้งเมื่อใช้ SDK เช่น FB หรือ Libraries เช่น Vuforia หรือ GoogleAnalytics การเพิ่มโปรเจ็กต์ตัวอย่างอาจทำให้เกิดปัญหาว่าพวกเขารวม Frameworks อยู่แล้วดังนั้นคุณต้องแน่ใจว่าจะไม่ทำซ้ำสัญลักษณ์ที่คุณเพิ่มด้วยตนเองในขณะที่มันอยู่แล้ว รวมอยู่ในตัวอย่าง


2

สำหรับฉันปัญหาคือรูปแบบของการสร้าง const ซึ่งใช้ได้ดีจนถึง iOS8 นี้ .. ฉันมีสองสามบรรทัดดังนี้:

int const kView_LayoutCount = 3;

ในไฟล์. h ของฉัน หกบรรทัดเช่นผลลัพธ์ในไฟล์ตัวเชื่อม 636 เมื่อบล็อกทั่วไปถูกตั้งค่าเป็น NO (14k + ถ้าใช่) ย้ายบรรทัดไปที่. m หลังจากขีดฆ่า. h ของการประกาศค่าและการคอมไพล์ก็ทำได้ดี

หวังว่านี่จะช่วยคนอื่น ๆ !


2

ในกรณีของฉันเหตุผลโง่เกินไป:

ฉันมีไฟล์ Constant.h ที่ฉันกำหนดมาโครไว้ ฉันคิดจะทำ NSString ที่นั่น และทำสิ่งนี้:

NSString const *kGreenColor = @"#00C34E";

สิ่งนี้ทำให้เกิดปัญหาของ Duplicate Symbols for Architecture arm64 และคำสั่ง Linker ล้มเหลวด้วยรหัสออก 1 การลบบรรทัด const NSString ใช้งานได้สำหรับฉัน


2

ตรวจสอบไฟล์รวมของคุณฉันพบปัญหานี้เพราะฉันบังเอิญ #imported "filename.m" แทนที่จะเป็น "filename.h" การแก้ไขอัตโนมัติ (แท็บ) ใส่ "m" ไม่ใช่ "h"


ขอบคุณมากฉันไม่รู้ตัวเลยว่าฉันทำผิดพลาดครั้งนี้กำลังใช้เวลาทั้งหมด ขอบคุณอีกครั้ง👍
Supertecnoboff

1

จากข้อผิดพลาดจะปรากฏว่าชั้นเรียนใด ๆ ปรากฏขึ้นหลายครั้งค้นหาและลบออกว่าชั้นเรียนจะใช้งานได้

กำลังสร้างไฟล์ AppDelegate.h และ. m สร้างหลายครั้ง ดังนั้นข้อผิดพลาดนี้จะเกิดขึ้นในที่สุดค้นหาและลบคลาสนั้นก็ใช้งานได้ดีสำหรับฉัน


1

ในการแก้ปัญหานี้ให้ไปที่ขั้นตอนการสร้างและค้นหาเกี่ยวกับไฟล์ที่ซ้ำกันเช่น (facebookSDK, unityads) และลบ (ไฟล์นามสกุล o) จากนั้นสร้างอีกครั้ง


0

สำหรับฉันฉันสร้างวิธีการที่เรียกsampleMethodใน ViewController_A และสร้างวิธีการเดียวกันใน ViewController_B secondSampleMethodเกินไปมันจะทำให้เกิดข้อผิดพลาดนี้ฉันแล้วฉันเปลี่ยนชื่อวิธีการในการ มันแก้ไขข้อผิดพลาด

ดูเหมือนเป็นคุณลักษณะที่ดีในการลดรหัสและไม่ให้รหัสซ้ำกันในหลาย ๆ ที่

ฉันลองเปลี่ยนบล็อก No Common จากใช่เป็นไม่ใช่แล้วเปิดใช้งานการทดสอบจากใช่เป็นไม่ใช่มันไม่ได้ผล ฉันตรวจสอบไฟล์ที่ซ้ำกันแล้วในขั้นตอนการสร้าง แต่ไม่มีไฟล์ที่ซ้ำกัน


0

ฉันได้รับปัญหานี้เนื่องจากฉันขี้เกียจกำหนดตัวแปรใน. m ของฉันนอกเมธอดจากนั้นในไฟล์. m อื่นฉันกำลังกำหนดตัวแปรอื่นที่มีชื่อเดียวกันนอกเมธอด สิ่งนี้ทำให้เกิดปัญหาซ้ำชื่อตัวแปรส่วนกลาง


0

ปัญหาสำหรับฉันคือฉันได้รวมเฟรมเวิร์กด้วยตนเอง แต่ก็รวมเฟรมเวิร์กเดียวกันนั้นไว้ใน CocoaPods โดยไม่รู้ว่าฉันทำเช่นนั้น เมื่อฉันลบอย่างใดอย่างหนึ่งปัญหาก็หายไป



0

ฉันสามารถแก้ไขข้อผิดพลาดนี้ได้ซึ่งระบุว่า "158 สัญลักษณ์ที่ซ้ำกันสำหรับสถาปัตยกรรม armv7, 158 สัญลักษณ์ที่ซ้ำกันสำหรับสถาปัตยกรรม arm64" --- หากนี่คือสิ่งที่คุณได้รับเช่นกันแสดงว่าคุณกำลังพยายามรวบรวมไฟล์ที่กำลังนำเข้าหรือ สืบทอดเฟรมเวิร์กหรือไลบรารีแบบคงที่โดยมีการอ้างอิงถึงโค้ด C ++ หรือไฟล์ วิธีง่ายๆในการจัดการสิ่งนี้คือการเปลี่ยนนามสกุลของไฟล์. m เป็น. mm นี่คือวิธีจัดการหากคุณใช้ Objective C ไม่แน่ใจว่าใช้ Swift

นอกจากนี้ในการตั้งค่าบิลด์ของคุณคุณสามารถอัปเดต "แฟล็กตัวเชื่อมอื่น ๆ " เป็น -lc ++


0

หากมีคนทดลองการทำงานนี้กับ Flutter อย่าพยายามแยกตัวออกจากพ็อดเริ่มต้น

วิธีที่ฉันแก้ไขคือใช้ flutter clean, flutter run -d [อุปกรณ์ iOS]

หวังว่าจะช่วยใครสักคนได้


0

กรุณาเปลี่ยนการตั้งค่า

ขั้นตอนที่ 1: ไปที่ TARGETS -> Build Settings -> No Common Blocks -> No

ขั้นตอนที่ 2: ไปที่ TARGETS -> Build Settings -> enable testability -> No

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.