2013-07-01 27 views
23

Tôi vừa biên soạn một dự án và Xcode trả về hai lỗi này dường như không phải là lỗi của mã của tôi. Làm thế nào để sửa chúng?Xcode cung cấp lỗi liên kết Apple Mach-O

Undefined symbols for architecture i386: 
    "_vImageBoxConvolve_ARGB8888", referenced from: 
     -[UIImage(Blur) boxblurImageWithBlur:] in UIImage+Blur.o 
ld: symbol(s) not found for architecture i386 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 
+1

Chăm sóc để hiển thị mã liên quan? –

+0

Sự cố xảy ra với tệp 'UIImage + Blur.m'. Nó đang tìm kiếm một biểu tượng có tên 'vImageBoxConvolve_ARGB8888'. Bạn cần bao gồm tệp .m (hoặc .c) có biểu tượng này. – rmaddy

+0

Nhìn vào các liên kết này, chúng rất giống nhau: http://stackoverflow.com/questions/22032987/how-to-solve-mach-o-linker-error-in-ios7-xcode-5-0-1 http://stackoverflow.com/questions/20073146/mach-o-linker-error-xcode-5 – user3817794

Trả lời

40

Dạy một người đàn ông (hoặc phụ nữ) làm thế nào để cá:

Thường Mach-O Linker Lỗi có nghĩa là bạn chưa bao gồm một tập tin tiêu đề cho một chức năng bạn đang sử dụng trong mã của bạn.

Cách dễ nhất là sao chép hàm hoặc phương thức đó gọi và dán vào tìm kiếm nhanh bằng Xcode bằng shift + command + O. Thao tác này sẽ tìm kiếm tất cả các khung công tác (và các tệp tiêu đề), tìm thấy hàm hoặc phương thức gọi đó và hiển thị cho bạn vị trí của nó (tiêu đề trong trường hợp này):

Trong trường hợp này, cuộc gọi này thuộc về khung Tăng tốc ở trên đầu trang của bạn tệp, nhập:

#import <Accelerate/Accelerate.h> 

Khi thực hiện tìm kiếm nhanh, bạn có thể phải loại bỏ dấu gạch dưới hàng đầu. Nói cách khác, tìm kiếm vImageBoxConvolve_ARGB8888

Hope this helps

+19

Điều này không chính xác. Lỗi liên kết của tính chất này thường xuyên nhất do không liên kết với khung hoặc thư viện cung cấp biểu tượng bạn đang sử dụng. Nếu bạn không '# include' hoặc' # import' tiêu đề cần thiết, bạn có nhiều khả năng nhận được cảnh báo dọc theo dòng lệnh 'warning: khai báo ngầm của hàm 'vImageBoxConvolve_ARGB8888' không hợp lệ trong C99'. Việc thêm '# include' hoặc' # import' bị thiếu sẽ giải quyết cảnh báo trình biên dịch, nhưng không có gì để giải quyết lỗi liên kết. – bdash

+2

Đây là cách tốt để tìm ra khung nào bạn đang thiếu mặc dù –

+0

Tôi không thể tìm thấy thư viện còn thiếu, bạn có thể vui lòng cho tôi biết cách tìm hiểu xem thư viện nào bị thiếu. –

11

Google là bạn của bạn: ai đó đã sửa lỗi này bằng cách thêm khung tăng tốc vào dự án của họ (và điều này trông giống như lỗi khuôn khổ).

https://github.com/rnystrom/RNBlurModalView/issues/5

Hãy chắc chắn rằng bạn cũng có khuôn khổ QuartzCore bao gồm như là tốt, vì đó cũng là yêu cầu của thư viện đó.

+0

Không cần thiết phải liên kết với QuartzCore để sử dụng khung tăng tốc. – bdash

+1

Tôi không nói đó là. Thư viện anh ta đang sử dụng - RNBlurModalView - yêu cầu cả QuartzCore và Accelerate hoạt động. Rất có thể là tốt nếu một người bị bỏ rơi, người kia cũng vậy, vì vậy tôi đã thêm nó như một lời nhắn trong câu trả lời của tôi. – Xono

+0

+1: công trình này hoàn hảo cho tôi –

1

Rõ ràng vImageBoxConvolve_ARGB8888() không được định nghĩa. Xem liệu khung tăng tốc có được bao gồm đúng trong dự án hay không.

Các vấn đề liên quan