2015-06-19 18 views
20

unittest mục tiêu xây dựng của tôi thất bại với lỗi dưới đây:XCode unittest BUILD FAILED với lỗi "biểu tượng Không xác định cho kiến ​​trúc x86_64"

Undefined symbols for architecture x86_64: 
    "_OBJC_CLASS_$_MCStore", referenced from: 
     objc-class-ref in MCStoreTests.o 
ld: symbol(s) not found for architecture x86_64 
clang: error: linker command failed with exit code 1 (use -v to see invocation) 

thông tin cơ bản:

  • Xcode6.2
  • iOS8.2 SDK

Điều tôi đã kiểm tra:

  • Symbols Hidden by Default là Không
  • Other Linker Flags là -framework XCTest
  • Framework Search Paths là $ (SDKROOT)/Developer/Library/Frameworks $ (di truyền)
+0

Lớp 'MCStore' được triển khai ở đâu? – Droppy

+0

nó được thực hiện trong mục tiêu ứng dụng của tôi. –

+0

Và mục tiêu thử nghiệm bao gồm tệp triển khai đó? – Droppy

Trả lời

49

Theo link này, tôi cần phải đặt Bundle Loader với nội dung bên dưới trong mục tiêu không được chấp nhận Build Settings

$(BUILT_PRODUCTS_DIR)/MyExistingApp.app/MyExistingApp
+0

liên kết hữu ích, cảm ơn –

+1

Câu trả lời này là một công cụ tiết kiệm cuộc sống !!! Tôi rất hạnh phúc tôi đã vấp phải nó !!! Cảm ơn nhiều!!! – Soberman

+0

Đúng, đó là trường hợp. Hãy cẩn thận, khi bạn có nhiều mục tiêu trong dự án của mình! – orkenstein

1

Trải nghiệm cùng một vấn đề. Điều gì đã khắc phục sự cố cho tôi là đặt enable modules (c and objective-c) thành trong mục tiêu Thử nghiệm Build Settings.

2

Ít nhất là mục tiêu kiểm tra Xcode 7.3 cho phép bạn chọn "Ứng dụng máy chủ". Trong mục tiêu Kiểm tra (nhưng hiện không phải là mục tiêu Kiểm tra Giao diện người dùng), thao tác này sẽ tự động điền cài đặt xây dựng "Kiểm tra Máy chủ", chứ không phải "Trình tải gói", có thể dẫn đến các lớp không được tìm thấy.

Xem xét điều này, nếu bạn đặt Cài đặt bản dựng "Trình tải gói" của mục tiêu thử nghiệm thành $(TEST_HOST), nó sẽ luôn chứa giá trị phù hợp ngay cả khi bạn thay đổi Ứng dụng máy chủ.

Điều này có hiệu quả đối diện lời khuyên được đưa ra trong liên kết @ yuwen-yan được đăng và sẽ có tác dụng ít hơn.

+1

Tôi đã tìm thấy '$ (TEST_HOST)' là cấu hình mặc định, tuy nhiên vẫn không tìm thấy một trong các nhóm của tôi. –

-2

Dưới đây là các bước mà tôi thực hiện để khắc phục vấn đề khi cố gắng thêm mục tiêu kiểm tra đơn vị trong Xcode 9:

  1. Đến 'Quản lý Đề án'.
  2. Nhấp vào nút '+' ở dưới cùng.
  3. Chọn Mục tiêu mới được thêm và chọn 'OK'.
  4. Đảm bảo tùy chọn 'Được chia sẻ' được chọn cho mục tiêu mới được thêm.
Các vấn đề liên quan