2012-03-17 32 views
7

Tôi cần tạo một khung công tác (yêu cầu thư viện tĩnh) cho một dự án mà tôi đang làm việc. Tôi đã sử dụng this tutorial để tạo khuôn khổ, sau đó sao chép thư viện tĩnh vào dự án và nó hoạt động.Bao gồm một thư viện tĩnh bên trong một khung động trong iOS

Nhưng, khi tôi kéo khung đến dự án iOS, nó hiển thị một tấn lỗi.

`Undefined symbols for architecture i386:"_OBJC_CLASS_$_SomeClassFromTheStaticLibrary",referenced from:_OBJC_CLASS_$_AnotherClass in MyFramework` 

Điều tôi nghĩ đang xảy ra là dự án iOS muốn biên dịch lại khung và không thể, vì không thể định vị thư viện tĩnh. Tất cả các lỗi biến mất nếu tôi thêm thư viện tĩnh vào dự án iOS. Đây là những gì tôi muốn tránh.

Về cơ bản, tôi muốn có dự án iOS -> Framework -> Thư viện thay vì có thư viện trong cả dự án lẫn khung công tác.

Tôi đã thử thêm thư viện tĩnh làm tài nguyên trong khung, nhưng nó không hoạt động.

+0

bất kỳ giải pháp nào cho vấn đề của bạn? Tôi đang đối mặt với một vấn đề tương tự ở đây .. –

+0

Tôi đã giải quyết nó, nhưng tôi sắp xếp bị lừa. Tôi đã truy cập vào mã nguồn của cả ba dự án, vì vậy tôi đã biên dịch lại thư viện tĩnh dưới dạng một khung công tác. Bằng cách này tôi đã có Dự án iOS -> Framework -> Framework và chỉ phải nhập một khung. – OlivaresF

+0

chưa có giải pháp thực sự nào? Tôi thậm chí không thể loại bỏ vấn đề đó nếu tôi đưa các thư viện tĩnh vào dự án iOS ... – b00tsy

Trả lời

0

Tôi nghi ngờ điều này là có thể. Khi bạn nghĩ về những gì đang xảy ra, bạn sẽ thấy vấn đề.

  1. Khung được biên dịch và thư viện tĩnh được xử lý để những thứ như những biểu tượng thêm được tước ra
  2. Ứng dụng hiện đang được biên dịch và liên kết chống lại các khuôn khổ mà có thể hoặc không có thể có những biểu tượng mà ứng dụng đang yêu cầu

Tôi đã thực hiện việc này nếu CHỈ khuôn khổ đang sử dụng thư viện tĩnh (hợp lý) nhưng tôi không thể tìm cách chia sẻ mã qua khung & ứng dụng.

-2

Tôi đã theo dõi link này để tạo khung tùy chỉnh. Tôi có thư viện tĩnh bên trong khuôn khổ của tôi và nó hoạt động tốt với điều đó.

Tôi đã sao chép các bước của mình trong my blog để hiểu biết của tôi cùng với tập lệnh để làm cho nó trở nên phổ biến.

+0

Bạn có thư viện tĩnh ở đâu? Bạn có liên kết chúng trong tab pha xây dựng không? – OlivaresF

0

Nếu một biểu tượng được ẩn (hoặc thông qua biểu tượng ẩn theo mặc định/GCC_SYMBOLS_PRIVATE_EXTERN được thiết lập để YES hoặc __attribute__ ((visibility ("hidden"))) đang được áp dụng cho các biểu tượng nhất định), sau đó biểu tượng sẽ được cung cấp khi liên kết tĩnh thư viện, nhưng không phải khi tự động liên kết khuôn khổ .

Đảm bảo rằng các ký hiệu của thư viện tĩnh không bị ẩn và bạn sẽ có thể truy cập chúng từ ứng dụng của mình.

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