2013-01-16 43 views
8

Tôi gặp phải lỗi 'biểu tượng trùng lặp' trong Xcode 4.5.1 khi tôi cố gắng xây dựng một dự án sau khi thêm khung của riêng mình. Tôi đã xác minh các tệp khuôn khổ cho các bản sao và không có tệp nào. Nhưng khi tôi thêm khung vào một dự án, nó sẽ phàn nàn với những lỗi này. Xin đề nghị ..Lỗi biểu tượng trùng lặp trong Xcode

duplicate symbol _NXArgc in: 
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o 
/Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW 

duplicate symbol _NXArgv in: 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o 
/Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW 

duplicate symbol ___progname in: 
    /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o 
/Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW 

duplicate symbol _environ in: 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o 
/Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW 

duplicate symbol start in: 
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/crt1.3.1.o 
/Users/idcc/Test/MyFW/Products/MyTestFW.framework/MyTestFW 
ld: 8 duplicate symbols for architecture armv7 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

Thanks in advance ..

+2

Tôi có cùng một vấn đề, tuy nhiên nó không chạy khi tôi bắt đầu nó trên iPhone của tôi.Vì vậy, tôi chỉ có vấn đề này trong giả lập của tôi ... – Roger

+0

Tương tự ở đây, chỉ trên giả lập ... – Redwarp

+0

Tôi cũng có vấn đề cụ thể này. Tìm kiếm một câu trả lời, đăng một tiền thưởng. – BadPirate

Trả lời

9

Những biểu tượng trong crt.o, mã khởi động của thư viện C chuẩn. Thông thường, nó phải là điểm vào của tệp thực thi để khởi tạo các biến và đối tượng chung. Nó cũng sẽ gọi chức năng chính của bạn.

Nhưng đối với một khuôn khổ, bạn không nên bao gồm nó trong nhị phân của bạn bởi vì khuôn khổ không nên có chính. Tôi tin rằng bạn có tùy chọn "Liên kết với Thư viện Chuẩn" dưới dạng "CÓ" trong cài đặt xây dựng mục tiêu của khung công tác. Điều này sẽ liên kết crt.o vào khung công tác của bạn. Và khi bạn liên kết khung thành một dự án, sẽ có các biểu tượng trùng lặp.

Vui lòng đặt tùy chọn "Liên kết với thư viện chuẩn" thành NO trong cài đặt bản dựng của bạn.

+8

Khi tôi thực hiện việc này, tôi nhận được nhiều lỗi hơn: Biểu tượng không xác định cho kiến ​​trúc x86_64: ... – Kaptain

+2

Khi tôi đặt Liên kết với Thư viện Chuẩn thành không có trong cài đặt xây dựng, tôi nhận được 177 lỗi trình biên dịch thay vì 1 –

13

Tôi đã gặp vấn đề tương tự với việc sử dụng hai khung bên thứ ba. Tôi đã giải quyết điều đó bằng cách xóa "all_load" khỏi "Cờ liên kết khác" trong cài đặt bản dựng.

5

Ứng dụng của bạn đã cung cấp triển khai trong đó có 8 ký hiệu trùng lặp.

Có một số cách bạn có thể đã thực hiện việc này:

Bạn có hai mô-đun khai báo cùng một lớp. Có lẽ một người không còn cần thiết nữa?

Bạn đang nhập khẩu bất kỳ tập tin tiêu đề trong cả các tập tin .m và :-(.h Di chuyển từ một nơi.)

Bạn đang nhập khẩu bất kỳ tập tin .m ở đâu đó. : - (Nhập tệp .h thay vì tệp .m)

Bạn đã xác định và khai báo bất kỳ biến const nào ở bên ngoài (ở trên) @interface {} trong bất kỳ tệp .h nào, nó có thể bị trùng lặp. : - (Thực hiện trong tập tin .m.)

0

Ngoài ra kiểm tra, nếu các biến toàn cầu như hằng số được xác định chính xác trong tập tin .h trong ứng dụng.

Cách chính xác để xác định biến toàn cầu là sử dụng biến số extern trong tệp .h.

Lưu ý: Đây không phải là vấn đề với phiên bản Xcode trước đó. Tôi đã gặp vấn đề với Xcode 6.3 và nó đã được giải quyết.

0

Nếu bạn có vấn đề này chỉ khi bạn chạy các ứng dụng trong mô phỏng, nó được giải quyết bằng cách xóa các thư mục địa phương

~/Library/Developer/CoreSimulator 

Xcode sẽ khôi phục lại nó sau khi xây dựng đầu tiên và chạy. XIN ĐẢM BẢO BẠN BACKUP BẤT CỨ CÀI ĐẶT trước khi thực hiện việc này (đặc biệt là những thiết bị liên quan đến thiết bị mô phỏng).

Thử nghiệm trên Xcode Version 7.2.1 (7C1002)

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