2013-07-29 43 views
7

Tôi bắt buộc phải bao gồm cờ -ObjC trong "Cờ liên kết khác" trong Xcode để sử dụng thành phần của bên thứ ba. Tuy nhiên, khi tôi thêm cờ này, tôi nhận được một loạt lỗi giống như sau:-ObjC cờ liên kết gây ra lỗi biểu tượng trùng lặp

duplicate symbol _OBJC_IVAR_$_GAI.defaultTracker_ in: 
     /MyApp/GoogleAnalytics/libGoogleAnalytics.a(GAI.o) 
     /MyApp/GoogleAnalytics/libGoogleAnalytics_debug.a(GAI.o) 
    duplicate symbol _OBJC_IVAR_$_GAI.dispatcher_ in: 
     /MyApp/GoogleAnalytics/libGoogleAnalytics.a(GAI.o) 
     /MyApp/GoogleAnalytics/libGoogleAnalytics_debug.a(GAI.o) 
... 
    duplicate symbol _OBJC_CLASS_$_GAIDispatcher in: 
     /MyApp/GoogleAnalytics/libGoogleAnalytics.a(GAIDispatcher.o) 
     /MyApp/GoogleAnalytics/libGoogleAnalytics_debug.a(GAIDispatcher.o) 
    duplicate symbol _OBJC_METACLASS_$_GAIDispatcher in: 
     /MyApp/GoogleAnalytics/libGoogleAnalytics.a(GAIDispatcher.o) 
     /MyApp/GoogleAnalytics/libGoogleAnalytics_debug.a(GAIDispatcher.o) 
    ld: 212 duplicate symbols for architecture armv7s 

Một lần nữa, điều này sẽ biến mất nếu tôi không sử dụng cờ -ObjC. Dường như có liên quan đến thư viện Google Analytics. Làm thế nào để tôi có được điều này?

+2

có vẻ như bạn đã bao gồm _both_ gỡ lỗi và phiên bản bình thường của phân tích thư viện google – nielsbot

+0

Đúng, nhưng deb ug thư viện là cần thiết để gỡ lỗi rõ ràng. Tôi không nhận được các lỗi này khi tôi không sử dụng cờ -ObjC. – soleil

Trả lời

7

Chỉnh sửa cấu hình phát hành và gỡ lỗi của mục tiêu xây dựng của bạn. Bao gồm phiên bản gỡ lỗi của thư viện trong cấu hình gỡ lỗi và phiên bản không gỡ lỗi cho mục tiêu phát hành. Không bao gồm cả hai trong cùng một cấu hình - đây là lý do tại sao bạn đang nhận được các biểu tượng trùng lặp.

Tháo hai thư viện từ xây dựng các mục tiêu của bạn, ví dụ:

remove libraries from build targets

Sau đó tìm kiếm cho "cờ mối liên kết khác" trong cài đặt xây dựng mục tiêu của bạn và thêm "-lGoogleAnalytics_debug" cho cấu hình Debug và "- lGoogleAnalytics" cho cấu hình phát hành, ví dụ:

set linker flags for debug and release configs

+0

Làm cách nào để tôi có thể đặt libGoogleAnalytics_debug.a chỉ được bao gồm trong cấu hình gỡ lỗi? – soleil

+0

Tôi nghĩ rằng có một cài đặt xây dựng để kiểm soát các biến thể thư viện ... (nhưng có thể chỉ hoạt động cho thư viện được tải động) – nielsbot

+0

Bạn có thể thử xóa thư viện khỏi giai đoạn xây dựng thư viện của mình, sau đó sử dụng cài đặt "Cờ kết nối khác" (__OTHER_LDFLAGS__) liên kết với __libGoogleAnalytics__ thích hợp – nielsbot

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