2011-10-24 28 views
9

Tôi nhận được một vài thư viện tĩnh tôi muốn sử dụng trong ứng dụng iphone của mình. Khi tôi cố gắng chạy trình mô phỏng, tôi nhận được các lỗi liên kết. Tôi mới phát triển iOS và tôi đã gặp sự cố này khi liên kết với các thư viện mà tôi đã tạo trước đây;iOS - tệp được tạo cho lưu trữ không phải là kiến ​​trúc được liên kết (i386)

file was built for archive which is not the architecture being linked (i386) 

Có nghĩa là tất cả các chức năng tôi tham khảo từ các thư viện mang lại cho tôi điều này:

undefined symbols for architectyre i386 

Tôi không chắc chắn những gì để cấu hình để thực hiện quyền này. Các thư viện tĩnh được xây dựng cho armv7, nền tảng hỗ trợ armv6 armv7.

+6

Dường như các thư viện không tương thích với trình mô phỏng, chúng chưa được xây dựng cho i386. Thử nghiệm trên một thiết bị hoặc nếu mã từ các thư viện có sẵn cho bạn, hãy xây dựng lại nó, bao gồm kiến ​​trúc i386 –

+0

Có tôi đã nhận được mã, làm cách nào để chỉ định cho nó để xây dựng cho i386? Ngay bây giờ; "Kiến trúc: Tiêu chuẩn (armv7)", "Kiến trúc hợp lệ: armv6 armv7", "Chỉ xây dựng kiến ​​trúc hoạt động: không" – KaiserJohaan

+0

Không chắc chắn bây giờ ... Thêm i386 vào kiến ​​trúc hợp lệ? –

Trả lời

12

Tôi đã sắp xếp một lỗi rất giống với một thư viện tĩnh mà tôi đang xây dựng cho iPad. Tôi tin rằng giải pháp của tôi là thêm "i386" vào thiết lập Kiến trúc cho dự án (Nhấn vào Project -> Build Settings -> Architectures --hoặc nó là Kiến trúc hợp lệ? - và nhấp vào biểu tượng '+', gõ "i386 "trong dòng được đánh dấu). Anywho đó sẽ giúp bạn gần gũi.

Ồ, một cảnh báo nữa, tôi đã đọc rằng chúng tôi cũng nên đặt "Chỉ xây dựng kiến ​​trúc hoạt động" thành "Không". Nó đã được thiết lập cho tôi, nhưng đó là một cái gì đó bạn có thể muốn kiểm tra.

+0

Điều này làm việc cho tôi – Krishnan

2

Sau khi đấu tranh với cùng một vấn đề này và làm theo tất cả các câu trả lời được chấp nhận về cập nhật cài đặt xây dựng, xóa đường dẫn tìm kiếm liên kết, v.v .. Cuối cùng tôi đã tìm ra câu trả lời phù hợp với mình.

Trước khi xây dựng, hãy đảm bảo bạn chọn đúng loại (Trình mô phỏng iPhone) thay vì Thiết bị iOS. Sau đó xây dựng lại. Nếu không, bạn đang cố gắng sử dụng thư viện được xây dựng cho thiết bị iOS (bộ xử lý cánh tay) trên trình mô phỏng (i386). Nên rõ ràng, nhưng không phải vậy.

Trước:

iOS Device Settings

Sau:

iPhone 5.1 Simulator Settings

Bây giờ, hãy nhìn vào các nhóm sản phẩm trong Navigator> nhấn chuột phải thư viện tĩnh của bạn (.a tập tin)> Hiển thị trong Finder, bạn sẽ nhận thấy rằng nó trong thư mục Debug-iphonesimulator thay vì Debug-iphoneos. Tôi đã không chú ý đến tên thư mục ban đầu, hoặc tôi có thể nghĩ về điều này sớm hơn.

Hy vọng điều này sẽ hữu ích.

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