Liên kết thư viện tĩnh với dự án iOS trong Xcode 4


76

Tôi có một dự án ( AQGridView) biên dịch thành thư viện tĩnh, nhưng dường như tôi không thể thêm nó vào dự án của mình.

Việc kéo dự án vào dự án của tôi sẽ tạo ra một không gian làm việc và nếu tôi cố gắng liên kết libAQGridView.atệp từ DerivedDatathư mục, nó sẽ không nhận ra nó là một thư viện. Tôi không chắc mình đang làm gì sai.

Đây là AQGridViewdự án. Có ai biết cụ thể cách sử dụng nó trong một dự án Xcode 4 không?


1
Bạn đã bỏ phiếu cho tôi sau 29 phiếu tăng, 2 năm sau? Và trên hết, tuyên bố bạn vừa đưa ra không có ý nghĩa gì cả.
Matt Hudson


Không thể giải thích tốt hơn so với ở đây: Liên kết tĩnh Libraries
Subham93

Câu trả lời:


94

Tôi làm điều này như sau:

  1. Kéo trong dự án thư viện tĩnh. Nếu bạn có dự án thư viện tĩnh đang mở trong Xcode, hãy đóng nó ngay bây giờ.
  2. Chọn dự án chính trong trình điều hướng dự án (dự án tôi đang thêm thư viện tĩnh vào) và trong trình chỉnh sửa, bên dưới tiêu đề MỤC TIÊU ở cột bên trái, chọn mục tiêu dự án chính của tôi và điều hướng đến tab Xây dựng giai đoạn.
  3. Nhấp vào "+" cho Phụ thuộc mục tiêu và thêm phụ thuộc mục tiêu biểu tượng thư viện từ dự án thư viện tĩnh đã thêm.
  4. Nhấp vào dấu "+" cho Liên kết Nhị phân với Thư viện và thêm biểu tượng thư viện trong thư mục "Không gian làm việc".
  5. Cũng có thể cần nhập Đường dẫn Tìm kiếm Tiêu đề cho các tiêu đề của dự án thư viện tĩnh nếu đó là cách các tiêu đề được liên kết trong chính dự án thư viện tĩnh.

Nếu bạn không thấy dự án thư viện tĩnh được lồng trong dự án chính trong trình điều hướng dự án của dự án chính, thì lý do rất có thể là do dự án Xcode của thư viện tĩnh vẫn đang mở. Thoát Xcode và mở dự án chính có dự án thư viện tĩnh lồng nhau trong đó mà không mở dự án thư viện tĩnh ban đầu và bạn sẽ thấy nó xuất hiện như một dự án lồng nhau trong dự án chính của bạn.


17
Điều này có vẻ như nó sẽ hoạt động, nhưng vì một số lý do mà thư viện không hiển thị trong Phụ thuộc Mục tiêu. Nó hiển thị trong Liên kết nhị phân với Thư viện, nhưng không hiển thị Phụ thuộc Mục tiêu. Tôi không thể hiểu tại sao nó sẽ không hiển thị.
Matt Hudson

2
Hóa ra rằng dự án phải được lồng vào nhau, điều này sẽ sửa lỗi Phụ thuộc mục tiêu hiển thị.
Matt Hudson

1
Dự án chính phải liên kết đến thư viện và đường dẫn đến thư mục có chứa tiêu đề (hoặc đường dẫn đến thư mục chứa tất cả nguồn đến thư viện nếu bạn muốn chọn hộp đệ quy).
Halle

1
Bạn định kéo thư viện tĩnh vào đâu? Không có bảng nào trong dự án của tôi chấp nhận một đối tượng được kéo ...
zakdances

2
Bạn không kéo thư viện tĩnh, bạn kéo biểu tượng dự án màu xanh lam chính của dự án Xcode của thư viện tĩnh trong ngăn điều hướng dự án hoặc biểu tượng Trình tìm kiếm của nó vào biểu tượng dự án màu xanh lam chính trong ngăn điều hướng dự án của dự án Xcode mà bạn đang thêm nó vào.
Halle

15

Menu Xcode> Xem> Tiện ích> Trình kiểm tra tệp

Chọn tệp thư viện tĩnh, rồi đặt 'Loại tệp' là 'Mã đối tượng Mach-O' trong 'Danh tính và Loại'.


Chà, thật là một giải pháp kỳ lạ, nhưng hoàn toàn hiệu quả với tôi. Cảm ơn! Trường hợp sử dụng của tôi là sao chép một .athư viện tĩnh vào Frameworkstrong bản dựng và liên kết chống lại nó, điều này bắt đầu gây ra lỗi thư viện "không tìm thấy hình ảnh" sau khi sắp xếp lại dự án của tôi một chút. Không còn nữa, nhờ những điều trên.
Markus Amalthea Magnuson

5

Không gian làm việc được cho là làm cho việc này dễ dàng hơn, nhưng tôi không biết rằng chúng làm được. Cách tôi làm là tạo không gian làm việc, thêm dự án chính của tôi, thêm dự án thư viện của tôi. Sau đó, đi vào các giai đoạn xây dựng của dự án chính và thêm thư viện trong phần "Liên kết nhị phân với các thư viện" và thêm thư viện. Đó hẳn là tất cả những gì cần thiết, ít nhất đó là bài đọc của tôi, nhưng không phải vậy. Những gì tôi làm là đi vào tùy chọn Xcode, sau đó đến ngăn Cây nguồn. Thêm cây nguồn trỏ đến tiêu đề thư viện tĩnh của bạn, sau đó quay lại cài đặt xây dựng cho dự án của bạn, sau đó đến khóa Đường dẫn tìm kiếm tiêu đề và nhập $ {foo} vào đó, trong đó "foo" là bất cứ thứ gì bạn gọi là cây nguồn .

Đó là những gì phù hợp với tôi, mặc dù tôi không biết đó là cách tốt nhất hay dễ nhất để làm điều đó.


Nếu bạn có phiên bản XCode mới nhất, đây chắc chắn là cách để bạn thực hiện. Dễ dàng hơn nhiều so với việc tìm hiểu nội bộ dự án và xây dựng thư mục.
zakdances

5

Tìm tệp .a của bạn trong công cụ tìm và kéo tệp đó vào dự án của bạn.

Chọn 'sao chép các mục vào thư mục của nhóm đích (nếu cần)' và thêm tiêu đề vào dự án của bạn.

Bây giờ, XCode 4 sẽ tự động liên kết với khuôn khổ đó cho bạn.

Đây là thư viện sẽ trông như thế nào trong dự án của bạn:


1
Tôi đã làm điều đó chính xác, nhưng nó không công nhận nó là một thư viện. Biểu tượng chỉ hiển thị một trang thay vì chỉ báo thư viện.
Matt Hudson

Dĩ nhiên là không. Nó không được cho là giống một khuôn khổ .. Điều đó không có nghĩa là nó không liên kết.
Richard J. Ross III

Các khung có biểu tượng màu vàng, biểu tượng màu trắng trông giống như Đế chế La Mã đã xây dựng nó là thư viện :)
Matt Hudson

3

Làm theo tài liệu của Apple .

Tóm lại:

  1. Liên kết mục tiêu của bạn với thư viện.
  2. Thêm -ObjCvào 'Cờ trình liên kết khác' ( OTHER_LDFLAGS) trong cài đặt xây dựng của mục tiêu.

Ngoài ra, tôi cần thêm thư viện vào lược đồ của dự án chính của mình vì thư viện không hiển thị trong phần phụ thuộc của mục tiêu.


0

Câu trả lời của Halle phù hợp với tôi với một bổ sung:

  1. Kiểm tra trong Cài đặt Xây dựng của dự án thư viện tĩnh giá trị Đường dẫn Thư mục Tiêu đề Riêng (hoặc Công khai) và sao chép nó.
  2. Thêm giá trị đã sao chép vào dự án khách hàng Xây dựng Đường dẫn Tìm kiếm Tiêu đề Cài đặt hoặc Đường dẫn Tìm kiếm Tiêu đề Người dùng tùy thuộc vào chỉ thị bao gồm bạn đang sử dụng
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.