สัญลักษณ์ที่ไม่ได้กำหนดสำหรับสถาปัตยกรรม arm64


200

ฉันได้รับข้อผิดพลาด Apple Mach-O Linker ทุกครั้งที่ฉันนำเข้าไฟล์จาก CocoaPods

Undefined symbols for architecture arm64:
  "_OBJC_CLASS_$_FBSession", referenced from: someFile
ld: symbol(s) not found for architecture arm64

ฉันได้รับประมาณ 12 จากสิ่งเหล่านี้สำหรับพ็อดต่างๆที่ฉันใช้

ฉันกำลังพยายามสร้าง iPhone 5S โดยใช้ XCode 5

ฉันได้ลองใช้วิธีแก้ไขปัญหาต่าง ๆ ที่นี่ใน SO แต่ยังไม่ได้ทำงานใด ๆ

ฉันจะแก้ไขข้อผิดพลาด Apple Mach-O Linker ได้อย่างไร


เพิ่งพบคำเตือนอื่นที่อาจน่าสนใจฉันหวังว่าสิ่งนี้จะนำฉันไปสู่การแก้ไข:

Ignoring file ~/Library/Developer/Xcode/DerivedData/SomeApp/Build/Products/Debug-iphoneos/libPods.a, 

file was built for archive which is not the architecture being linked (arm64):~/Library/Developer/Xcode/DerivedData/someApp/Build/Products/Debug-iphoneos/libPods.a


โซลูชันอย่างง่ายไปที่เป้าหมาย -> การเชื่อมโยง -> ตัวเชื่อมโยงอื่น ๆ ตั้งค่าสถานะและเพิ่ม $ (สืบทอดมา) ในการตั้งค่าตัวเชื่อมโยงอื่น ๆ ทั้งในการดีบั๊กและการเปิดตัว
Mihir Oza

คำตอบ:


248

หากสถาปัตยกรรมและสถาปัตยกรรมที่ถูกต้องของคุณถูกต้องคุณสามารถตรวจสอบว่าคุณได้เพิ่ม$(inherited)หรือไม่ซึ่งจะเพิ่มธงลิงเกอร์ที่สร้างขึ้นในพ็อดไปยัง ลิงเกอร์ลิงเกอร์ธงอื่น ๆดังต่อไปนี้: ป้อนคำอธิบายรูปภาพที่นี่


7
@chancyWu คุณอธิบายได้ไหม?
Paul Brewczynski

5
หากยังใช้งานไม่ได้ให้เพิ่ม @ (สืบทอด) ไปยังเส้นทางการค้นหาของห้องสมุดด้วย
Enrico Susatyo

1
ฮ่า ๆUse the $(inherited) flagคำเตือนเทอร์มินัลถูกละเว้น และข้อผิดพลาดมาถึงฉันที่นี่ บันทึกวันของฉัน
Sushil Sharma

2
ฉันทำงานกับ Xcode 7.2 และธงอื่น ๆ ของลิงเกอร์ -> แก้ไขข้อบกพร่องฉันเห็น: -weak_framework CoreFoundation - weak_framework UIKit -weak_framework AVFoundation -weak_framework CoreMedia -weak-lSystem -ObjC ... ที่นี่ฉันเพิ่ม $ (สืบทอดมาแล้ว) แต่มันไม่ใช่ ' t work
Alessandra

คุณประหยัดเวลาได้มาก ขอบคุณ
Nirmalsinh

123

ปัญหาคือ cocoapod ไม่ได้ถูกสร้างขึ้นสำหรับสถาปัตยกรรม arm64 ดังนั้นจึงไม่สามารถเชื่อมโยงได้เมื่อคุณสร้าง ดูเหมือนว่าคุณจะไม่สามารถใช้แพ็คเกจเหล่านี้ได้จนกว่าจะมีการอัปเดตและใช้สถาปัตยกรรมนั้น คุณสามารถแก้ไขข้อผิดพลาด linker ได้โดยไปที่โครงการ -> เป้าหมาย (ชื่อโครงการของคุณ) -> สร้างการตั้งค่าและเปลี่ยนสถาปัตยกรรมเป็นสถาปัตยกรรมมาตรฐาน (armv7, armv7s) และสถาปัตยกรรมที่ถูกต้องเป็น armv7, armv7s

หมายเหตุแม้ว่านี่หมายความว่าคุณจะไม่ได้รับประสิทธิภาพเต็มที่ของโปรเซสเซอร์ 64 บิต คุณบอกว่าคุณกำลังสร้างสำหรับ 5s ดังนั้นอาจมีเหตุผลบางอย่างที่คุณต้องการ หากคุณต้องการกำลังไฟด้วยเหตุผลบางอย่าง (บางทีคุณกำลังสร้างเกม) และต้องการไฟล์เหล่านั้นอย่างยิ่งคุณสามารถส่งคำขอดึงและจากนั้นคอมไพล์โปรเจ็กต์ใหม่เป็น arm64 โดยการตั้งค่าฟิลด์เดียวกันเป็น arm64 ในไฟล์ที่คุณดึงมา โครงการโอเพ่นซอร์ส แต่ถ้าคุณไม่ต้องการให้ไฟล์เหล่านี้ใช้งานร่วมกันได้ 64 บิตดูเหมือนว่าจะเกินความจำเป็นในตอนนี้

แก้ไข: บางคนรายงานด้วยว่าการตั้งค่า Build สำหรับสถาปัตยกรรมที่ใช้งานเป็น YES ก็จำเป็นเช่นกันในการแก้ปัญหานี้

ตั้งแต่วันที่ 2014-04-28 การตั้งค่าควรมีลักษณะดังนี้:

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


4
วิธีนี้แก้ไขข้อผิดพลาดสำหรับการทำงานบนเครื่องจำลองอย่างไรก็ตามมันไม่ได้แก้ไขข้อผิดพลาดสำหรับการทำงานบนอุปกรณ์ Pods ถูกปฏิเสธเนื่องจาก libPods.a เพราะมีสถาปัตยกรรม '' (ด้วยเหตุผลบางอย่างมันตรวจไม่ได้ - แม้ว่าฉันจะเห็นใน Xcode) ไม่ได้มี armv7 armv7s 'สถาปัตยกรรมของ armv7 ที่จำเป็นทั้งหมด
GangstaGraham

7
ตกลงฉันได้รับสิ่งนี้โดยการตั้งค่า Build สำหรับสถาปัตยกรรมที่ใช้งานเป็นใช่ ขอบคุณมาก!
GangstaGraham

2
นอกเหนือ: คุณสามารถใช้fileคำสั่งใน Terminal เพื่อบอกสถาปัตยกรรมที่สนับสนุนไลบรารีแบบสแตติก
funroll

8
เพิ่งเข้ามาที่นี่เพื่อเพิ่มเข้าไปในคอรัส: การเลือก YES สำหรับสร้างเพื่อสถาปัตยกรรมแบบแอคทีฟเป็นตัวเลือกที่ดีที่สุดที่นี่
Wells

56
นี่ไม่ใช่ทางออกอีกต่อไป Apple ต้องการการสนับสนุน 64 บิตสำหรับการปรับใช้ทั้งหมด

52

ฉันแก้ไขปัญหานี้โดยการตั้งค่าที่:

ARCHS = armv7 armv7s

VALID_ARCHS = armv6 armv7 armv7s arm64


1
ฉันมีปัญหาที่คล้ายกันเมื่อใช้ XCode 5.1 เป็นครั้งแรกสิ่งนี้จะแก้ไขได้ ขอบคุณ!
GangstaGraham

@ Morisunshine คุณแน่ใจหรือว่าคุณตรวจสอบสถาปัตยกรรมไบนารีหลังจากสร้างแล้วหรือยัง
onmyway133

@ onmyway133 ฉันได้ตรวจสอบแล้ว แต่ตอนนี้ฉันไม่พบปัญหานี้ใน XCode ใหม่
morisunshine

@morisunshine ใช่ฉันหมายความว่าคุณสูญเสียแขน 64
onmyway133

ไม่มีข้อผิดพลาดของบิลด์อีกต่อไปจนถึงตอนนี้มันก็โอเค แต่ในขณะอัปโหลดงานสร้างที่เก็บถาวรฉันได้รับข้อผิดพลาดที่ขาดหายไป 64 บิตเนื่องจากการสนับสนุน arm64 บิตเป็นการบังคับจาก 1 ก.พ. 2558
zeeawan

45

ฉันพบปัญหาในการใช้งานแบบเดียวกัน / คล้ายคลึงกันAVPictureInPictureControllerและปัญหาคือฉันไม่ได้เชื่อมโยงกรอบงานAVKitในโครงการของฉัน

ข้อความแสดงข้อผิดพลาดคือ:

Undefined symbols for architecture armv7:
   "_OBJC_CLASS_$_AVPictureInPictureController", referenced from:
       objc-class-ref in yourTarget.a(yourObject.o)
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)

การแก้ไขปัญหา:

  1. ไปที่โครงการของคุณ
  2. เลือกเป้าหมายของคุณ
  3. จากนั้นไปที่Build Phases
  4. เปิดลิงก์ไบนารีกับไลบรารี
  5. สุดท้ายเพียงแค่เพิ่ม+ AVKit กรอบ / อื่น ๆกรอบ

หวังว่านี่จะช่วยให้คนอื่นพบปัญหาที่คล้ายกันที่ฉันมี


6
ใช่น่าเอ่ยถึงว่านี่เป็นข้อผิดพลาดที่เกิดขึ้นหากคุณไม่มีกรอบ เงื่อนงำหนึ่งคือคุณลองลบสถาปัตยกรรมและอีกอัน / ที่เหลือล้มเหลวด้วย ...
Kristen Waite

1
งานที่ดี `" _OBJC_CLASS _ $ _ XXXXXClass "อ้างอิงจาก:` ,, เพิ่ม xxx Framework
iHTCboy

จับได้เห็นชัดตรงเผง! ใครก็ตามที่เห็นอะไรก็ตามที่พิมพ์ด้วย 'xml' ลองดูที่นี่ - ในกรณีของฉันมันเป็นกรอบ 'libxml' ที่ไม่ได้ถูกเชื่อมโยง
Evusas

หลังจากแก้ไขการแนะนำของฝักเกิดข้อผิดพลาดนี้และวิธีการทั้งหมดไม่ได้รับการแก้ไข แต่วิธีการของคุณแก้ไขปัญหาได้ หมายเหตุ: lib ไม่สามารถค้นหาได้
lee ตัวเอก

33

ฉันยังพบปัญหาเดียวกันวิธีการข้างต้นจะไม่ทำงาน ฉันลบไฟล์ในไดเรกทอรีต่อไปนี้โดยบังเอิญ

ตำแหน่งของโฟลเดอร์:

~ / Library / Developer / Xcode / DerivedData /

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


3
แปลกอย่างนี้อาจดูเหมือนว่าใช้งานได้จริง ขอบคุณเพื่อน
เฟลิเป้

2
การลบข้อมูลที่ได้รับด้วยตนเองทำให้ฉันได้เช่นกัน ไชโย!
L_Sonic

7
ขอบคุณ! ฉันต้องการที่จะเพิ่มคำแนะนำ: โฟลเดอร์อยู่ภายใต้ / ผู้ใช้ / yourname / Library / Developer / XCode / DerivedData
Stefano Buora

คุณควรลบข้อมูลที่ได้รับโดยใช้เทอร์มินัล: rm -rf ~ / Library / Developer / Xcode / DerivedData
simon_smiley

ช่วยประหยัดเวลาของฉัน ... XDDD
Hsiao-Ting

25

กำหนดArchitectureเป็นarmv7 armv7s , สร้าง Active Architecture เฉพาะเป็นNOสำหรับทุกเป้าหมายในโครงการรวมถึงทุก ๆ อันในPods


ทำงาน sorta ... ตอนนี้ฉันได้รับข้อผิดพลาด "ลายเซ็น bitcode ไม่ถูกต้อง"
JeremyF

18

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

สมาชิกเป้าหมาย


Xcode 9 จะไม่ใช้สิ่งนี้โดยอัตโนมัติแม้ว่าจะทำเครื่องหมายในช่องทำเครื่องหมายแล้ว ขอบคุณ.
Amro Shafie

นั่นคือปัญหา Thankyou
Ignacio Hernández

11

ต่อไปนี้เป็นคำอธิบายว่าทำไม build_active_architectureตั้งเป็น NO Xcode จะตรวจจับอุปกรณ์ที่คุณเชื่อมต่อและจะตั้งค่าสถาปัตยกรรมที่ใช้งานอยู่ ดังนั้นหากคุณเสียบ iPod Touch รุ่นที่ 2 เข้ากับคอมพิวเตอร์ Xcode ควรตั้งค่าสถาปัตยกรรมที่ใช้งานเป็น armv6 การสร้างเป้าหมายของคุณด้วยการตั้งค่า Debug ด้านบนตอนนี้จะสร้าง armv6 binary เท่านั้นเพื่อประหยัดเวลา (เว้นแต่คุณจะมีโครงการขนาดใหญ่คุณอาจไม่สังเกตเห็นความแตกต่าง แต่ฉันเดาว่าวินาทีนั้นจะเพิ่มขึ้นตามเวลา)

เมื่อคุณสร้างการกำหนดค่าการกระจายสำหรับการเผยแพร่ไปยัง App Store คุณควรตรวจสอบให้แน่ใจว่าไม่ได้ตั้งค่าตัวเลือกนี้ดังนั้น Xcode จะสร้างไบนารีสากลที่เป็นไขมันแทน http://useyourloaf.com/blog/2010/04/21/xcode -build ใช้งานสถาปัตยกรรม-only.html


นั่นคือ FUBARed ที่เหลือเชื่ออย่างไม่น่าเชื่อ! เอาต์พุตของ XCode ขึ้นอยู่กับอุปกรณ์ที่คุณเชื่อมต่อกับเครื่องสร้าง!
Matt

6

คุณต้องลบarm64ออกจากValid Architectureและตั้งNOเป็นActive Architecture เท่านั้นใช้งานสถาปัตยกรรมเท่านั้นตอนนี้เพียงแค่ทำความสะอาดสร้างและเรียกใช้ คุณจะไม่เห็นข้อผิดพลาดนี้อีก

:) KP



4

สิ่งนี้อาจเกี่ยวข้องกับlibz.dylibหรือlibz.tbdเพียงแค่เพิ่มลงในเป้าหมายของคุณสำหรับไบนารีการเชื่อมโยงและลองรวบรวมอีกครั้ง


พยายามเพิ่มกรอบการทำงานของ Tesseract และสิ่งนี้ช่วยฉันได้ขอบคุณ !
HelloimDarius

3

ฉันแก้ไขได้โดยการตั้งค่า archs ที่ถูกต้องเป็น armv7 armv7s และการตั้งค่าสร้างสถาปัตยกรรมที่แอคทีฟเฉพาะกับ YES ในรุ่นแล้วจึงทำการ "pod install" ใหม่จากบรรทัดคำสั่ง


3

เมื่อรับ iPhone 5s และยังไม่ได้รับไลบรารี่ของบุคคลที่สามรุ่น 64 บิตฉันต้องกลับไปใช้โหมด 32 บิตด้วย Xcode ล่าสุด (ก่อนหน้า 5.1 จะไม่บ่น)

ฉันแก้ไขสิ่งนี้โดยการลบ arm64 จากรายการ Valid Architectureures จากนั้นตั้งค่า Build Active Architecture เป็น No สำหรับฉันแล้วมันสมเหตุสมผลกว่าวิธีอื่น ๆ ตามที่แสดงไว้ด้านบน ฉันกำลังโพสต์ในกรณีที่คนอื่นไม่สามารถใช้วิธีการใด ๆ ข้างต้นได้


3

ฉันมีปัญหาเดียวกันหลังจากอัปเกรดเป็น Xcode 5.1 และแก้ไขโดยการตั้งค่าArchitecturesเป็นarmv7 armv7s


3

ติดอยู่กับปัญหานี้ตลอดทั้งวัน

ฉันมี Schemes หลายชุดมันก็ดีสำหรับ Demo, Internal, Release - อย่างไรก็ตาม Debug Scheme จะไม่คอมไพล์และบ่นเกี่ยวกับ libPods.a ที่หายไป

วิธีแก้ไขคือไปที่โครงการ -> เป้าหมาย -> สร้างการตั้งค่าและเปลี่ยน "สร้างสถาปัตยกรรมที่ใช้งานเท่านั้น" เป็นใช่ ทำความสะอาดและสร้าง! ในที่สุดชั่วโมงของอาการคันหัวแก้ไข!


ไม่ใช่ปัญหาเดียวกันกับคุณ แต่คล้ายกัน ฉันแก้ไขด้วยวิธีการเดียวกับที่คุณให้ไว้
Helzgate


2

สิ่งนี้ใช้ได้กับฉัน:

ios sdk 9.3

ในการตั้งค่าบิลด์ของคุณสำหรับ สถาปัตยกรรมที่ถูกต้องของ app.xcodeproj : armv7 armv7s Build Active architecture: No

ทำความสะอาดและสร้างใช้งานได้สำหรับฉัน


1

ต่อไปนี้ทำงานสำหรับฉันที่จะได้รับการรวบรวม GPUImage ไม่มีข้อผิดพลาดใน Xcode 5.1 สำหรับทั้งจำลอง 64 บิตและมินิ iPad จอตาโดยไม่ต้องจำเป็นต้องลบ arm64 ออกจากรายการ Valid Architectureures (ซึ่งเอาชนะวัตถุประสงค์ของการเป็นเจ้าของอุปกรณ์ 64 บิตสำหรับการทดสอบ ประสิทธิภาพ 64 บิต)

ดาวน์โหลดโฟลเดอร์. zip จากหน้า GitHub: https://github.com/BradLarson/GPUImage

เปิดเครื่องรูดและนำทางไปยังโฟลเดอร์ 'framework' จากที่นี่เพิ่มและคัดลอกโฟลเดอร์ 'Source' ลงในโครงการ Xcode ของคุณ ตรวจสอบให้แน่ใจว่ามีการทำเครื่องหมายที่ 'คัดลอกรายการไปยังโฟลเดอร์ของกลุ่มปลายทางและ' สร้างกลุ่มสำหรับโฟลเดอร์ที่เพิ่มใด ๆ 'ด้วยเช่นกัน สิ่งนี้จะคัดลอกไฟล์ส่วนหัว / การนำไปใช้งานทั่วไป, iOS และ Mac ลงในโครงการของคุณ

หากคุณไม่ต้องการไฟล์ Mac เพราะคุณกำลังรวบรวม iOS คุณสามารถลบโฟลเดอร์ Mac ก่อนที่จะคัดลอกไฟล์ไปยังโครงการของคุณหรือเพียงแค่ลบกลุ่มออกจากภายใน Xcode

เมื่อคุณเพิ่มโฟลเดอร์ซอร์สลงในโครงการของคุณแล้วให้ใช้สิ่งต่อไปนี้เพื่อเริ่มใช้คลาส / วิธีการของ GPUImage:

#import "Source/GPUImage.h" 

บางสิ่งที่จะชี้ให้เห็น:

  • หากคุณพบข้อผิดพลาดว่าไม่พบ 'Cocoa' คุณได้เพิ่มโฟลเดอร์ Mac / หัวกระดาษลงในโครงการ iOS ของคุณ - เพียงแค่ลบกลุ่ม Mac / ไฟล์จากโครงการของคุณและคำเตือนจะหายไป
  • หากคุณเปลี่ยนชื่อโฟลเดอร์ Source (ไม่ใช่กลุ่มใน Xcode) ให้ใช้ชื่อนั้นแทน "Source / GPUImage.h" ในคำสั่ง #import ดังนั้นหากคุณเปลี่ยนชื่อโฟลเดอร์เป็น GPUImageFiles ก่อนที่คุณจะเพิ่มในโครงการให้ใช้: #import "GPUImageFiles / GPUImage.h
  • เห็นได้ชัดว่ามีการเลือก arm64 ในรายการ Valid Architectureures เพื่อใช้ประโยชน์จากโปรเซสเซอร์ A7 64 บิต!
  • นี่ไม่ใช่ชุดรวม GPUImage.framework (เช่นถ้าคุณดาวน์โหลดเฟรมเวิร์กจากhttp://www.raywenderlich.com/60968/ios-7-blur-effects-gpuimage ) ดังนั้นจึงอาจไม่ใช่วิธีที่ถูกต้องในการใช้ GPUImage Brad Larson ตั้งใจไว้ แต่มันใช้ได้กับโครงการ SpriteKit ปัจจุบันของฉัน
  • ไม่จำเป็นต้องลิงก์ไปยังเฟรมเวิร์ก / ไลบรารีเป็นต้นเพียงแค่นำเข้าส่วนหัวและโฟลเดอร์ซอร์สการดำเนินการตามที่อธิบายไว้ข้างต้น

หวังว่าการช่วยเหลือด้านบน - ดูเหมือนว่าจะไม่มีคำแนะนำที่ชัดเจนแม้จะมีคำถามที่ถูกถามหลายครั้ง แต่ไม่ต้องกลัว GPUImage สามารถใช้ได้กับสถาปัตยกรรมแขน 64 แน่นอน!


1

ปัญหานี้เกิดขึ้นสำหรับผมหลังจากติดตั้งฝักผ่าน Podfile pod installและ หลังจากลองใช้การแก้ไขที่แตกต่างกันในที่สุดฉันก็เพิ่งนำเข้า Pod ด้วยตนเอง (ลากไฟล์ที่จำเป็นไปยังโครงการของฉัน) และแก้ไขปัญหา


ที่ใช้งานได้สำหรับฉัน แต่เป็นพ็อดที่ใช้งานง่ายหนึ่งไฟล์
iluvatar_GR

1

ในฐานะที่เป็นคำตอบของmorisunshineชี้ไปในทิศทางที่ถูกต้องบิดเล็กน้อยในคำตอบของเขาแก้ปัญหาของฉันสำหรับ iOS8.2 ขอบคุณกับเขา

ฉันแก้ไขปัญหานี้โดยการตั้งค่าที่:

ARCHS = armv7

VALID_ARCHS = armv6 armv7 armv7s arm64

BUILD ACTIVE ARCHITECTURE ONLY= NO

1
  1. ไปที่เป้าหมายการตั้งค่าการสร้าง
  2. ตั้งค่าการสร้างสถาปัตยกรรมที่แอคทีฟเท่านั้น = ไม่ใช่สำหรับทั้งดีบั๊กและรีลีส
  3. สร้างและเรียกใช้

3
ตั้งค่าสถาปัตยกรรมที่ใช้งานอยู่เท่านั้นเป็น NO ในโครงการ PODS ด้วย!
Elad


1

สำหรับฉันฉันใช้ opencv 2.4.9 ใน xcode 7.2 สำหรับ iOS และข้อผิดพลาดข้างต้นเกิดขึ้นและฉันแก้ไขข้อผิดพลาดโดยใช้ opencv ผ่านการติดตั้ง pod มากกว่ากรอบ opencv ออฟไลน์

คุณสามารถลองด้วยการเพิ่มข้อความ pod opencv ด้านล่างและลบกรอบ opencv ออฟไลน์ถ้าคุณใช้

พ็อด 'OpenCV', '2.4.9'


1

ไม่มีการแก้ปัญหานี้แก้ไขข้อผิดพลาดในกรณีของฉัน (Xcode 9) TesseractOCRiOSด้วย หลังจากลองผิดลองถูกหลายชั่วโมงฉันก็พบทางออกที่ดี ฉันเพียงแค่ลบ'pod 'TesseractOCRiOS', '~> 4.0.0'ในวิ่งPodfile pod installจากนั้นเพิ่มpod 'TesseractOCRiOS', '~> 4.0.0'กลับไปPodfileและเรียกใช้pod installอีกครั้ง

ปัง มันได้ผล!


1

"เป้าหมาย OPN [Debug] จะแทนที่การตั้งค่าการสร้าง OTHER_LDFLAGS" นี่คือปัญหาหลัก หลังจากเพิ่ม $ (สืบทอด) ในบรรทัดใหม่ในการเชื่อมโยงธงอื่น ๆ แก้ไขปัญหาของฉัน ป้อนคำอธิบายรูปภาพที่นี่


1

ในบางกรณีหากคุณกำหนดหนึ่งอินเทอร์เฟซเพิ่มเติมในไฟล์. h แต่ไม่ได้ใช้อินเทอร์เฟซเหล่านี้ทั้งหมดข้อผิดพลาดนี้เกิดขึ้น

ตัวเชื่อมโยงไม่พบการติดตั้งในไฟล์. m ดังนั้นคุณต้องติดตั้งในไฟล์. m ของคุณสำหรับทุกอินเตอร์เฟส

ในการแก้ไขข้อผิดพลาดนี้:

1. ในไฟล์. m จัดหาการใช้งานสำหรับแต่ละอินเตอร์เฟส 2.rebuild


1

ฉันประสบปัญหาเดียวกัน โซลูชันของฉันฉันพบที่นี่:ทำไมตัวเชื่อมโยงเชื่อมโยงไลบรารีแบบคงที่กับข้อผิดพลาด iOS

การเพิ่ม$ (TOOLCHAIN_DIR) / usr / lib / swift / $ (PLATFORM_NAME)ไปยังเส้นทางการค้นหาห้องสมุดช่วยแก้ไขปัญหา


0

ฉันประสบปัญหาเดียวกันหลังจากติดตั้งเฟรมเวิร์ก AWS เพื่อแก้ไขปัญหานี้ฉันได้อัปเดตไฟล์กำหนดค่า POD จากโครงการของคุณซึ่งสร้างขึ้นหลังจากติดตั้ง AWS POD ตรวจสอบไฟล์กำหนดค่าดังนี้

OTHER_LDFLAGS = $(inherited) -ObjC -l"Pods-AWSAutoScaling" -l"
Pods-   AWSCloudWatch" -l"Pods-AWSCognito" -l"Pods-AWSCore" -l
"Pods-AWSDynamoDB" -l"Pods-AWSEC2" -l"Pods-AWSElasticLoadBalancing" 
-l"Pods-AWSKinesis" -l"Pods-AWSLambda" -l"Pods-AWSMachineLearning" 
-l"Pods-AWSS3" -l"Pods-AWSSES" -l"Pods-AWSSNS" -l"
Pods-AWSSQS"-l "Pods-AWSSimpleDB" -l"Pods-Bolts" -l"Pods-FMDB" 
-l"Pods-GZIP" -l"Pods-Mantle" -l"Pods-Reachability" -l"Pods-TMCache" 
-l"Pods-UICKeyChainStore" -l"Pods-XMLDictionary" -l"sqlite3" -l
"z"-framework "Accelerate" -framework "AssetsLibrary" 
-framework "CoreLocation" -framework "Foundation" -framework
"ImageIO" -framework "Security" -framework "SystemConfiguration"
-framework "UIKit" -weak_framework "UIKit"
 OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS)   

หากไฟล์กำหนดค่าของคุณทำงานไม่ถูกต้องให้ตั้งค่าตัวเชื่อมโยงอื่น ๆของคุณเป็น $ (สืบทอดมา)


0

หากการตั้งค่าสถาปัตยกรรมและตัวเชื่อมโยงดูดีให้ตรวจสอบไฟล์ h ของคุณ ปัญหาของฉันเป็นข้อผิดพลาดเดียวกัน แต่ฉันได้ปรับโครงสร้างไฟล์ h และฉันลบคำสั่งภายนอก ไฟล์ m อื่น ๆ กำลังใช้ตัวแปรนั้นทำให้เกิดข้อผิดพลาดของ linker


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