Tôi đang hoàn tất thư viện CometD mã nguồn mở C, tôi nghĩ rằng nên mở nó cho người dùng OSX/iOS, như tôi.Ký hiệu không xác định cho kiến trúc x86_64 trên Xcode 6.3
Để giảm bớt công việc cho nhà phát triển OSX/iOS, tôi muốn chuyển từ thư viện C tĩnh sang Xcode iOS Static Libary. Vì vậy, tôi đã làm theo lời khuyên tìm thấy trên mạng, và tạo ra một thư viện tương thích iOS tĩnh.
Vấn đề là, mỗi lần khi tôi đang cố gắng sử dụng nó, tôi nhận được một lỗi kiểu:
ký Không xác định cho kiến trúc x86_64: ******, tham chiếu từ: - ********** trong *******. a (*******. o)
Lỗi này được lặp lại cho hầu hết mọi hàm C mà tôi có trong thư viện của tôi.
Đầu tiên tôi nghĩ có thể thư viện không phải là x86_64 compatible
, trống hoặc thực sự không có bất kỳ biểu tượng x86_64 nào trong đó.
Vì vậy, tôi đã kiểm tra với một "lipo -info" trên thư viện và đây là câu trả lời:
Để thực sự chắc chắn tôi cũng sử dụng "nm -arch x86_64" trên thư viện, và đã tìm nạp một số chức năng chưa được xác định do Xcode báo cáo là lỗi. Tôi nghĩ rằng tôi sẽ sai và không tìm thấy gì ngoài đoán cái gì?
Vì vậy, câu hỏi của tôi là:
Nếu những biểu tượng có mặt trong một thư viện tương thích x86_64, tại sao Xcode khiến lỗi này? Ngay cả khi tôi biên dịch thư viện cho tất cả các loại */s cánh tay, tôi vẫn nhận được lỗi x86_64 này.
Tôi không biết điều gì đó hay tôi chỉ làm sai?
Câu trả lời của bạn luôn được đánh giá cao.
Cập nhật (Đây là liên kết để dự án Xcode): https://github.com/GhostGumm/CometD-x86_64-issue
Cập nhật 2: Ông Trojanfoe thu hút sự chú ý của tôi trên một Cảnh báo liên kết tôi đã khi biên dịch. Thật vậy, mối liên kết dường như bỏ lỡ tải thư viện tìm kiếm một thư mục không tồn tại. Sau khi di chuyển thư viện vào đúng thư mục, liên kết nó theo cách thủ công, lỗi x86_64 biến mất.
Rất tiếc, sự cố vẫn xảy ra. Ngay sau khi một bộ sưu tập thành công, tôi đã cố gắng để sử dụng lib, nhưng, khi tôi "alloc" và "init" class chính của tôi như vậy:
ZetaFactory *Client = [[ZetaFactory alloc] init];
Các lỗi x86_64 trở lại gầm với khốc liệt chính hãng của một tỷ mặt trời. Tôi đã đăng liên kết tới dự án Xcode, vui lòng thử nghiệm nó vì tôi không có thêm ý tưởng nào về cách khắc phục, nhưng quan trọng hơn là tại sao và nơi này bị lỗi.
Không ít tôi sẽ tiếp tục điều tra.
Câu hỏi được đặt ra, với rất nhiều nỗ lực được hiển thị. Để làm rõ, bạn đang xây dựng cho Trình mô phỏng iOS, phải không? – trojanfoe
Simulator có, nhưng cũng cho Thiết bị trong lần thứ hai. –
OK, do đó, khả năng duy nhất là bạn không thực sự liên kết với thư viện tĩnh đó. Kiểm tra dòng lệnh của trình liên kết trong tab xây dựng và đảm bảo rằng nó sử dụng các giá trị chính xác cho '-L' và' -l'. – trojanfoe