"_OBJC_CLASS_$_viewsampleViewController", на который ссылаются из:
Я создаю контроллер представления viewsampleViewController.. и у него есть два метода setname и getname.. я создаю тестовый сценарий для этого контроллера представления. мое имя тестового случая - newTestCase, а имя метода - testName.
#import "newTestCase.h"
#import "viewsampleViewController.h"
@implementation newTestCase
в моем методе testName,
-(void)testName{
NSString *b=@"hello";
v =[[viewsampleViewController alloc] init];
STAssertNotNil(v,@"v doesnt created");
[v setuname:@"hello"];
NSString *a=[v getuname];
STAssertEquals(b,a,@"error:name not equal");
[v release];
}
-(void)setUp{
v=[viewsampleViewController alloc];
}
-(void) tearDown{
[v release];
}
когда я строю я получил ошибку
Ld "build/Debug-iphoneos/Unit test.octest/Unit test" normal armv6
cd /Users/anande/Documents/viewsample
setenv IPHONEOS_DEPLOYMENT_TARGET 3.1.3
setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 -arch armv6 -bundle -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk -L/Users/anande/Documents/viewsample/build/Debug-iphoneos -F/Users/anande/Documents/viewsample/build/Debug-iphoneos -F/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.1.3.sdk/Developer/Library/Frameworks -filelist "/Users/anande/Documents/viewsample/build/viewsample.build/Debug-iphoneos/Unit test.build/Objects-normal/armv6/Unit test.LinkFileList" -dead_strip -framework Foundation -framework SenTestingKit -miphoneos-version-min=3.1.3 -o "/Users/anande/Documents/viewsample/build/Debug-iphoneos/Unit test.octest/Unit test"
Undefined symbols:
"_OBJC_CLASS_$_viewsampleViewController", referenced from:
__objc_classrefs__DATA@0 in newTestCase.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Пожалуйста, помогите мне,
5 ответов
Эта проблема компоновщика возникает из-за архитектуры и зависимости. На самом деле, когда мы добавляем некоторые файлы в наш проект из других источников, точная зависимость может не быть установлена. Поэтому компилятор генерирует ошибку компоновщика. Я решил эту проблему, выполнив следующие действия:
- Выберите цель
- Выберите этапы сборки
- Выберите источники компиляции
- Выберите значок +
- Выберите файл.m, для которого вы получаете сообщение об ошибке, и добавьте его.
- Очистите сборку и запустите снова.
Это ошибка компоновщика, добавьте viewsampleViewController.m к вашей цели теста. Пожалуйста, начните с имен ваших классов в верхнем регистре, чтобы все стало более читабельным
Каким-то образом файл viewsampleViewController.m не компилируется. Убедитесь в своей части проекта.
У меня была такая же проблема, когда я делал некоторые изменения в источниках проекта. Все.m были изменены на.mm, и по какой-то причине в "Link Binary With Libraries" конкретный класс, у которого возникли проблемы, там не был добавлен, а был в "Copy Bundle Resources". После того, как я изменил, что это сработало.
Так вот что я сделал:
1) Нажмите на синюю вкладку проекта в верхнем левом углу Xcode. 2) Перейдите к опции "ЦЕЛИ". 3) Перейдите на вкладку "Фазы сборки". 4) Перейдите к "Копировать ресурсы комплекта". 5) Найдите файл реализации (.m, .mm) и, если он там есть, удалите его, нажав опцию минус (-). 6) Перейдите в "Compile Sources", нажмите "плюс" (+) и добавьте этот файл реализации. 7) Скомпилируйте и попробуйте, брат, вы готовы.
Надеюсь это поможет. Приветствия.
Хотя добавление файлов приложения.m непосредственно к цели тестирования решает проблему, оно является избыточным и ненужным. Следуйте инструкциям Two Bit Labs, чтобы все заработало. Подводя итог, убедитесь, что ваш...
- цель теста
Bundle Loader
Настройка сборки указывает на комплект вашего приложения. - цель теста
Test Host
Настройка сборки указывает на комплект вашего приложения. - цель приложения
Symbols Hidden by Default
настройка сборкиNO
,