2011-11-13 41 views
6

Tôi đang gặp một lỗi biên dịch trong iOS Simulator 4.3 Tôi có thể không thực sự con số nó ra, Các lỗi tôi nhận được là:libobjc.A.dylib biên dịch lỗi trên iOS 4.3

dyld: lazy symbol binding failed: Symbol not found: _objc_retain 
    Referenced from: /Users/ben/Library/Application Support/iPhone Simulator/4.3.2/Applications/75915A97-7C3D-489A-B7B0-7B6895A4B584/AppName.app/AppName 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/usr/lib/libobjc.A.dylib 

dyld: Symbol not found: _objc_retain 
    Referenced from: /Users/ben/Library/Application Support/iPhone Simulator/4.3.2/Applications/75915A97-7C3D-489A-B7B0-7B6895A4B584/AppName.app/AppName 
    Expected in: /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk/usr/lib/libobjc.A.dylib 

Lưu ý:
Thư viện đang được tham chiếu (libobjc.A.dylib) thực sự nằm trong 'Nơi dự kiến' Mã hoạt động tốt trên thiết bị iOS5 và trong Trình mô phỏng iOS5.

+0

Bạn đang sử dụng ARC trong dự án này? Câu hỏi của bạn có thể là [trùng lặp với câu hỏi này không?] (Http://stackoverflow.com/questions/7423489/objective-c-arc-errors-automatic-release-problems) –

+0

không sử dụng ARC, dự án quá phức tạp bật nó lên. – oberbaum

+0

Biểu tượng này không nằm trong thư viện 4.3, tôi tự hỏi ai đang yêu cầu điều này. Đi đến cả hai thư mục và làm 'nm libobjc.A.dylib | grep giữ lại', với 4.3 bạn sẽ chỉ thấy một biểu tượng _SEL_retain. Đã cố gắng để làm sạch dự án và xây dựng lại? –

Trả lời

28

Thêm -fobjc-arc trong Cài đặt Build => Flags Linker Khác (OTHER_LDFLAGS) cho các cấu hình khác nhau

+1

lực này không cho phép cung cấp cho toàn bộ dự án? không phải là điểm để không cho phép vòng cung? – stigi

+1

Không, nó không không ảnh hưởng đến toàn bộ dự án. – mackross

+4

Bạn sử dụng nó làm cờ ** linker **, không phải cờ ** compiler **, vì vậy nó không ảnh hưởng đến ARC tại thời gian biên dịch, chỉ ở thời gian liên kết. – 0xced

1

Vấn đề này xảy ra nếu bạn sử dụng một thư viện có sử dụng ARC và muốn build/chạy trên iOS cũ hơn 4 thiết bị.

Trong Cài đặt Build => Flags Linker khác

  • Thêm -fobjc-arc
  • Nếu chưa không được giải quyết, sau đó thêm -weak_library /usr/lib/libobjc.A.dylib