2012-03-25 17 views
9

Tôi đang xây dựng một dự án máy quét mã iOS, sử dụng ZBar SDK. Tôi đang cố gắng xây dựng dự án của mình trực tiếp từ nguồn của ZBar, thay vì bao gồm thư viện tĩnh libzbar.a.Làm thế nào để xây dựng ZBar SDK với dự án thay vì sử dụng thư viện tĩnh?

Tôi đã tải xuống nguồn ZBar bao gồm dự án XCode để xây dựng libzbar.a. Tôi đã thử sao chép tất cả các tệp nguồn từ dự án nhưng nó không hoạt động. Tôi tiếp tục nhận được các lỗi biểu tượng không xác định.

Những tệp nguồn nào nên được đưa vào, xem xét rằng tôi chỉ cần hỗ trợ iOS?

Cấu trúc thư mục có được tuân thủ nghiêm ngặt để xây dựng dự án không?

Có bất kỳ nhu cầu cài đặt xây dựng nào nếu tôi bao gồm các tệp nguồn không?

CHỈNH SỬA: Tôi theo cùng cấu trúc thư mục và cài đặt bản dựng được sử dụng trong dự án XCode của libzbar. Tôi đã quản lý để xây dựng thư viện nhưng nó vẫn thất bại trong khi liên kết. Tôi gặp lỗi: ld: duplicate symbol _OBJC_METACLASS cho tất cả các tệp nguồn. Tôi đã kiểm tra gấp đôi, không có tham chiếu đến thư viện libzbar.a ban đầu trong dự án hoặc nhiều hơn một lần xuất hiện của các tệp nguồn này. Nếu tôi loại bỏ các tài liệu tham khảo cho họ, dự án xây dựng tốt, nhưng sau đó thất bại bất cứ khi nào bất kỳ biểu tượng từ thư viện được tham chiếu. Tôi nghĩ rằng tôi vẫn còn thiếu một cái gì đó !!

+0

ZBar là một dự án mã nguồn mở, chỉ được phân phối dưới dạng thư viện tĩnh để giúp tích hợp dễ dàng hơn, không vì các nhà phát triển không muốn mọi người nhìn thấy mã nguồn. Trong thực tế, nếu bạn đi qua trang web dự án, liên kết để tải xuống nguồn nằm ngay bên dưới liên kết để tải xuống thư viện tĩnh. – Vin

+0

Lỗi nào bạn nhận được? – rakeshNS

+0

@rakeshNS tất cả các lỗi đều thiếu tệp tiêu đề hoặc biểu tượng không xác định. – Vin

Trả lời

3

Tôi đã giải quyết vấn đề này cuối cùng. Dưới đây là các bước tôi đã thực hiện:

1) Đã sao chép các tệp nguồn của dự án vào dự án của tôi.

2) Đã xóa phụ thuộc của libzbar.a khỏi dự án của tôi.

3) Đã thêm đường dẫn vào thư mục chứa nguồn và tiêu đề đến cài đặt xây dựng Header Search Paths của dự án.

4) Thêm người dùng sau được xác định thiết lập cho dự án xây dựng:

EXCLUDE_SOURCE_FILE_NAMES
GCC_MODEL_TUNING
PREBINDING
USE_HEADERMAP

+0

Bạn đã tải xuống mã nguồn ở đâu? tôi cần bao gồm những lớp nào? – Dejell

+0

@Odelya mã nguồn có sẵn tại http://sourceforge.net/projects/zbar/ .Tôi đã bao gồm tất cả các lớp từ mã nguồn. – Vin

0

Bạn nên tạo thư viện tĩnh của mình từ mã nguồn rồi thêm thư viện tĩnh đầu ra vào dự án của bạn hoặc liên kết các dự án với nhau và buộc xây dựng thư viện tĩnh trước khi dự án của bạn được xây dựng.

Sau khi download file zip từ kho Mercurial mặc định và mở tập tin trong Xcode, bấm vào "EmbedReader" một phần của sự lựa chọn mục tiêu hộp thả xuống và chuyển sang "zBarSDK"

Khi bạn chuyển sang zBarSDK, chỉ cần xây dựng từ trình đơn sản phẩm và bạn nên có tệp thư viện tĩnh của mình ....

+0

Cảm ơn câu trả lời của bạn Lefteris nhưng phần đó khá rõ ràng. Tôi dự định thực hiện một số thay đổi lớn trong mã và muốn mã này có thể dễ dàng bảo trì bởi các nhà phát triển khác trong tương lai. Thay đổi mã trực tiếp trong dự án, nếu cần phát sinh, có vẻ là một lựa chọn tốt hơn cho tôi hơn là mở một dự án riêng biệt, thực hiện các thay đổi, biên dịch một thư viện và sau đó đưa vào dự án chính một lần nữa. – Vin

-1

Tôi đã sử dụng ZXing lib trước và nó được tích hợp tốt. Nó được bao gồm như là một dự án và dự án chính có mục tiêu phụ thuộc để xây dựng nó trước khi dự án chính. Tôi đã chỉnh sửa các nguồn cho nhu cầu của mình và không gặp vấn đề gì với nó.

Tôi đã sử dụng số tutorial này. Nó có thể hữu ích cho nhu cầu của bạn quá.

+0

Cảm ơn câu trả lời của bạn Alivig nhưng bằng cách nào đó zxing không phù hợp với yêu cầu của tôi. Tôi chỉ phải sử dụng zbar. – Vin