2014-09-17 19 views
6

Tôi đang xây dựng một dự án Unity cho trình mô phỏng iOS8. Di chuyển điều này cho Xcode 6 GM cho trình mô phỏng đã dẫn đến lỗi liên kết này. Không chắc chắn nếu tôi đang thiếu một cái gì đó trong xây dựng hoặc một cái gì đó bị hỏng. Bất kỳ đề xuất? Các lỗi đầy đủ là:

ký Không xác định cho kiến ​​trúc i386: "_clock $ UNIX2003", tham chiếu từ: _substanceHandleSwitchHard trong libiPhone-lib.a (apihandle.o) _mainRenderProcess trong libiPhone-lib.a (mainrenderprocess.o) ld: biểu tượng (s) không tìm thấy cho kiến ​​trúc i386

Thoát với mã 1

+0

có thể trùng lặp của [fopen $ UNIX2003 không thành công bên trong thư viện bên ngoài] (http://stackoverflow.com/questions/15856848/fopenunix2003-fails-inside-external-library) –

Trả lời

3

đồng hồ $ UNIX2003 là biểu tượng được cung cấp bởi OS X và không phải là một phần của thời gian chạy iOS Simulator. iOS là luôn tuân thủ và do đó không có các biến thể cũ (không $ UNIX2003) của các hàm (được cung cấp cho khả năng tương thích nhị phân với mã được xây dựng dựa trên các phiên bản cũ hơn của OS X SDK).

Nguyên nhân phổ biến của sự cố mà bạn đang thấy là bạn có tệp hoặc tệp lưu trữ đối tượng (libsomething.a) được xây dựng dựa trên OS X SDK và đang cố gắng liên kết nó với iOS Simulator của bạn. Điều đó không được hỗ trợ vì hai nền tảng không tương thích nhị phân ở lớp đó.

Bạn cần phải xây dựng lại thư viện của mình (libsomething.a) dựa vào iOS Simulator SDK.

+0

Tôi yêu cầu điều này để thử nghiệm chống lại iOS8. Cuối cùng nó đã được phát hành và tôi đã có thể thử nghiệm trên một thiết bị thực tế. Vấn đề này đã được giới hạn trong giả lập. – Culzean

+0

@culzean Đây không phải là vấn đề với trình mô phỏng. Đó là một vấn đề với thư viện mà bạn đang cố gắng liên kết vào trình mô phỏng thực thi của bạn. Thời gian chạy iOS Simulator và OS X không tương thích với nhị phân và có vẻ như các nhà phát triển Unity đã chuyển không chính xác thư viện tĩnh tương thích với OSX của Unity để sử dụng trong Trình mô phỏng iOS. Trong quá khứ, điều này chỉ dẫn đến lỗi thời gian chạy, nhưng bây giờ nó dẫn đến lỗi thời gian biên dịch trong nhiều trường hợp hơn so với trước đây. Hy vọng rằng bản cập nhật thực sự là một sự xây dựng của Unity chống lại iOS Simulator SDK và không phải là một cái gì đó với thêm hack để che giấu các lỗi. –

+0

hãy cho tôi biết cách xây dựng lại libsomething.a –

8

Thêm dòng sau vào cuối main.mm.

#include <time.h> 

extern "C" 
{ 
clock_t 
clock$UNIX2003(void) 
{ 
    return clock(); 
} 
} 
+0

Chắc chắn KHÔNG làm điều này. Bạn sẽ chỉ đơn giản là mặt nạ một lỗi sâu hơn trong đó bạn đang liên kết trong các tập tin đối tượng mà không phải là nhị phân tương thích với thời gian chạy iOS Simulator. –

+0

Điều này có thể đúng, @JeremyHuddlestonSequoia, nhưng đó là giải pháp thay thế hiện tại do nhóm Unity cung cấp (xem http://forum.unity3d.com/threads/ios8-xcode6-compatibility.249533/page-2#post-1769753). – coeing

+0

Sau đó, các nhà phát triển Unity cần cùng nhau hành động và cung cấp cho bạn các nhà phát triển một bản xây dựng thống nhất phù hợp cho Trình mô phỏng iOS thay vì cung cấp cho bạn một bản dựng dựa trên OS X SDK. –

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