"_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 ответов

Решение

Эта проблема компоновщика возникает из-за архитектуры и зависимости. На самом деле, когда мы добавляем некоторые файлы в наш проект из других источников, точная зависимость может не быть установлена. Поэтому компилятор генерирует ошибку компоновщика. Я решил эту проблему, выполнив следующие действия:

  1. Выберите цель
  2. Выберите этапы сборки
  3. Выберите источники компиляции
  4. Выберите значок +
  5. Выберите файл.m, для которого вы получаете сообщение об ошибке, и добавьте его.
  6. Очистите сборку и запустите снова.

Это ошибка компоновщика, добавьте 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, чтобы все заработало. Подводя итог, убедитесь, что ваш...

  1. цель теста Bundle Loader Настройка сборки указывает на комплект вашего приложения.
  2. цель теста Test Host Настройка сборки указывает на комплект вашего приложения.
  3. цель приложения Symbols Hidden by Default настройка сборки NO,
Другие вопросы по тегам