2012-09-13 29 views
25

Tôi vừa gặp lỗi này khi sử dụng ZBarSDK, một thư viện quét thanh cho iOS. Nó chạy tốt khi tôi tải nó lên thiết bị phát triển của mình hoặc kiểm tra nó trên trình mô phỏng iOS6. Nhưng khi tôi cố gắng chạy nó cho Phân phối nó không thành công với:Lỗi liên kết Apple Mach-O Lỗi ZBarSDK khi xây dựng để phân phối

(null): Tệp là phổ quát (3 lát) nhưng không chứa (n) armv7s slice:/Users/quique123/Documents/iphone apps/ScanThis /ZBarSDK/libzbar.a dành cho kiến ​​trúc armv7s

nơi libzbar.a là thư viện từ sdk.

Bất kỳ ý tưởng nào?

+0

Tôi đã đăng một giải pháp hoạt động khá tốt. Kiểm tra xem nó ra ở đây http://stackoverflow.com/a/12561312/1693858 – Microns

Trả lời

11

Đơn giản chỉ cần loại bỏ các kiến ​​trúc xấu từ Kiến trúc hợp lệ trong Target Aguilar Cài đặt và bạn tốt để đi :)

+1

Sau đó bạn có thể muốn xây dựng lại zbar để hỗ trợ arm7s. Chủ đề này có thể là điểm bắt đầu tốt http://sourceforge.net/projects/zbar/forums/forum/1072195/topic/5081620 – Zdenek

+1

Thận trọng: bằng cách thực hiện điều này, ứng dụng của bạn sẽ không còn khả dụng cho iPhone 5, đang chạy trên armv7 kiến trúc. – syntagma

+0

Cách xóa? Ý tôi là từ thư mục nào. Hãy cho tôi một số bước –

7

Khi bạn có mục tiêu của bạn chọn> Xây dựng Cài đặt (Tất cả)> Kiến trúc> Kiến trúc hợp lệ.

Khi bạn nhận được lỗi ở trên, hãy tháo armv7 (có thể nói [armv7 armv7s] ngay bây giờ) bằng cách nhấp đúp vào dòng và chọn armv7s và nhấn nút (-).

Trong trường hợp của tôi, điều này đã giải quyết được lỗi. Không chắc chắn nếu điều này sẽ có bất kỳ nhược điểm hơn nữa trên ..

EDIT: bây giờ tôi chắc chắn điều này có ít nhất một nhược điểm: Dự án không thể xây dựng cho iPhone 5. Giải pháp cho điều đó, là biên dịch lại ZBar nguồn khác nhau, như đã nêu ở đây: ZBar library for iPhone 5(ARMV7s)

+0

Làm việc tốt. –

16

Mở repo đang ZBar đang Mercurial

http://zbar.hg.sourceforge.net/hgweb/zbar/zbar/summary

đến các liên kết bz2/zip/gz tải nguồn hiện tại (ở định dạng ưa thích)

.210

http://zbar.hg.sourceforge.net/hgweb/zbar/zbar/archive/fa84e0427c24.tar.bz2 (như bưu ngày này) http://zbar.hg.sourceforge.net/hgweb/zbar/zbar/archive/fa84e0427c24.zip (như bưu ngày này) http://zbar.hg.sourceforge.net/hgweb/zbar/zbar/archive/fa84e0427c24.tar.gz (như bưu ngày này)

Mở 'iphone' thư mục con

Mở 'zbar.xcodeproj' nộp

trong menu chọn libzbar của Đề án và xây dựng phiên bản nhị phân của riêng bạn trong các kiến ​​trúc được hỗ trợ

mở DerivedData cho dự án đó và điều hướng đến xây dựng/Pro ống/

Look trong tất cả các thư mục cho libzbar.a

+0

Tôi đang cố gắng sử dụng lời khuyên này, nhưng tôi không thể tìm thấy tệp libzbar.a sau khi xây dựng. Tệp libzbar duy nhất được tạo ra là tệp .rc. Bất kỳ mẹo nào về những cài đặt nào tôi có thể đã bỏ lỡ? –

+1

@nj tôi đã chỉnh sửa câu trả lời của tôi để hướng dẫn bạn tốt hơn thông qua các bước cuối cùng, hy vọng điều đó sẽ giúp ích. – sbonami

+0

Hi Scott, Giải pháp này đã làm việc cho tôi. Tuy nhiên, tôi phải sử dụng hai tập tin libzbar.a - 1. Đối với giả lập 2. Đối với thiết bị. Có cách nào mà tôi chỉ có thể sử dụng một libber.a cho cả hai. Trong khi biên dịch libber.a tôi đã thiết lập thiết bị iOS cho thiết bị và trình mô phỏng iOS cho trình mô phỏng. Tôi có làm điều gì sai? –

1

Tôi chỉ thay thế trong Cài đặt xây dựng/Kiến trúc hợp lệ: "ARMv7" cho 2 hàng "ARMv6" và "ARMv7"

(Thông thường tôi sử dụng để nhận được lỗi mối liên kết này chỉ khi trình iTunes, nhưng không gỡ lỗi trong thiết bị)

0

chỉ cần loại bỏ các "armv7s", điều này sẽ làm việc :)

0

Set 'Xây dựng tích cực Kiến trúc Chỉ' YES cho phát hành. Tôi đã khắc phục vấn đề của mình bằng cách làm như vậy khi tôi đối mặt với cùng một vấn đề này.

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