Thử nghiệm đơn vị ứng dụng của tôi xây dựng và kiểm tra khi chạy trong trình mô phỏng, nhưng không thành công với lỗi trình liên kết khi xây dựng và thử nghiệm thiết bị.Kiểm tra đơn vị Xcode - Lỗi liên kết khi xây dựng cho thiết bị chỉ
Mở mục tiêu ứng dụng của tôi, tôi đã thiết xây dựng các thiết lập sau đây:
DEPLOYMENT_POSTPROCESSING = NO
GCC_SYMBOLS_PRIVATE_EXTERN = NO
Mở thử nghiệm đơn vị của tôi, tôi đã thiết lập các cài đặt sau xây dựng:
BUNDLE_LOADER = $(BUILT_PRODUCTS_DIR)/<app name>.app/<app>
TEST_HOST = $(BUNDLE_LOADER)
Các lỗi mối liên kết là:
Undefined symbols for architecture armv7s:
"_<An NSString * const>", referenced from:
-[UnitTestClassA setUp] in UnitTestClassA.o
"_<Another NSString * const>", referenced from:
-[UnitTestClassB helperMethod:] in UnitTestClassB.o
-[UnitTestClassB anotherHelperMethod:] in UnitTestClassB.o
ld: symbol(s) not found for architecture armv7s
clang: error: linker command failed with exit code 1 (use -v to see invocation)
... Tôi có "tiếp tục sau khi lỗi xây dựng" được bật trong tùy chọn của Xcode, nhưng tôi không nhận có một tấn các lỗi liên kết phàn nàn về NSString * const's. Nếu tôi đang làm điều gì đó sai, sau đó sẽ mong đợi nhiều lỗi liên kết hơn so với số ít tôi nhận được kể từ khi tôi sử dụng hằng số chuỗi trong suốt mã sản xuất của tôi.
tôi là tạo ra hằng chuỗi của tôi như thế này:
.h tập tin ...
extern NSString * const ReallyGoodString;
tập tin .m ...
NSString * const ReallyGoodString = @"This string is great!";
... các .m tập tin là mã sản xuất, và một phần của mục tiêu ứng dụng của tôi, và vì vậy tôi không phải liên kết nó vào nhóm thử nghiệm đơn vị.
Vì vậy, những gì đang diễn ra ở đây? Tại sao điều này chỉ hoạt động tốt trong trình mô phỏng chứ không phải trên thiết bị?
Tôi đã đăng một sample project to Github minh họa sự cố. Bạn có thể thấy trong dự án mẫu rằng vấn đề này là không phù hợp: một số biểu tượng liên kết tốt những người khác thì không.
Bạn đã bao giờ tìm ra điều này chưa? Tôi đang gặp vấn đề tương tự. Ngay cả người lạ, nó được sử dụng để làm việc tốt trước, và mối liên kết chỉ phàn nàn về một chuỗi liên tục trong một tập tin tiêu đề mà từ đó các biểu tượng khác được tìm thấy tốt. –
@JonGrall chưa tìm ra được – edelaney05