2010-08-18 2 views
1

[SOLVED]Как включить библиотеки Chipmunk в проект iPhone Xcode?

Я копирую структуру палочки-бурундука из шаблона cocos2d + chipmunk и строю ОК.

  • Классы/Бурундук/включить/SRC для 'ЦСИ' папки
  • Классы/Бурундук/бурундук для 'включить' папку

Благодаря бета для пытается помочь.

:::::

загрузить бурундук 5.3.1 и попробовать с помощью простого примера, но я получаю эту скомпилированные ошибки:

Undefined symbols: 
    "_cpSpaceStep", referenced from: 
     -[ChipmunkTestViewController delta:] in ChipmunkTestViewController.o 
    "_cpBodyNew", referenced from: 
     -[ChipmunkTestViewController configurarChipmunk] in ChipmunkTestViewController.o 
    "_cpSpaceAddShape", referenced from: 
     -[ChipmunkTestViewController configurarChipmunk] in ChipmunkTestViewController.o 
    "_cpSpaceAddBody", referenced from: 
     -[ChipmunkTestViewController configurarChipmunk] in ChipmunkTestViewController.o 
    "_cpSpaceHashEach", referenced from: 
     -[ChipmunkTestViewController delta:] in ChipmunkTestViewController.o 
    "_cpInitChipmunk", referenced from: 
     -[ChipmunkTestViewController configurarChipmunk] in ChipmunkTestViewController.o 
    "_cpCircleShapeNew", referenced from: 
     -[ChipmunkTestViewController configurarChipmunk] in ChipmunkTestViewController.o 
    "_cpSpaceNew", referenced from: 
     -[ChipmunkTestViewController configurarChipmunk] in ChipmunkTestViewController.o 
ld: symbol(s) not found 
collect2: ld returned 1 exit status 

Я не уверен, о добавлении библиотеки Бурундук правильно, какие источники из бурундука .tgz я должен включить?

Вот код:

ChipmunkTestViewController.h

#import <UIKit/UIKit.h> 
#import "chipmunk.h" 


@interface ChipmunkTestViewController : UIViewController { 
    UIImageView *barra; 
    UIImageView *esfera; 

    cpSpace *space; 
} 

- (void) configurarChipmunk; 
- (void) delta:(NSTimer *)timer; 
void updateShape(void *ptr, void *unused); 

@end 

ChipmunkTestViewController.m

#import "ChipmunkTestViewController.h" 

@implementation ChipmunkTestViewController 


- (void) configurarChipmunk { 
    cpInitChipmunk(); // Init Chipmunk engine 

    space = cpSpaceNew(); // Create new Space 
    space->gravity = cpv(0, -100); // Direcction and magnitude of gravity in Space 

    [NSTimer scheduledTimerWithTimeInterval:1.0f/60.0f target:self selector:@selector(delta:) userInfo:nil repeats:YES]; // NSTimer for animations 

    // Create esfera Body 
    cpBody *esferaBody = cpBodyNew(50.0f, INFINITY); 
    esferaBody->p = cpv(160,250); 
    // Create esfera Shape 
    cpShape *esferaShape = cpCircleShapeNew(esferaBody, 15.0f, cpvzero); 
    esferaShape->e = 0.5f; // Elasticity 
    esferaShape->u = 0.8f; // Friction 
    esferaShape->data = esfera; // UIImageView association 
    esferaShape->collision_type = 1; 

    cpSpaceAddBody(space, esferaBody); 
    cpSpaceAddShape(space, esferaShape); 

} 

- (void) delta:(NSTimer *)timer { 
    cpSpaceStep(space, 1.0f/60.0f);  // Refresh Space info 
    cpSpaceHashEach(space->activeShapes, &updateShape, nil);  // Refresh Shapes info 
} 

void updateShape(void *ptr, void *unused) { 
    cpShape *shape = (cpShape*)ptr; 
    if (shape == nil || shape->body == nil || shape->data == nil) { 
     NSLog(@"Invalid Shape..."); 
     return; 
    } 
    // Refresh Shape position 
    if ([(UIView*)shape->data isKindOfClass:[UIView class]]) { 
     [(UIView*)shape->data setCenter:CGPointMake(shape->body->p.x, 480 - shape->body->p.y)]; 
    } else { 
     NSLog(@"Shape updated outside updateShape function..."); 
    } 

} 

// Implement viewDidLoad to do additional setup after loading the view, typically from a nib. 
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    barra = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"barra.png"]]; 
    barra.center = CGPointMake(160, 350); 
    esfera = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"esfera.png"]]; 
    esfera.center = CGPointMake(160, 230); 

    [self.view addSubview:barra]; 
    [self.view addSubview:esfera]; 

    [self.view setBackgroundColor:[UIColor whiteColor]]; 

    [self configurarChipmunk]; 
} 

... 

@end 
+1

Какую команду вы используете для компиляции и ссылки? – Beta

+0

Команда? Я делаю CMD + B для создания приложения, где я могу найти точную команду, которую выполняет xcode для компиляции и ссылки? – rubdottocom

+0

Я решаю проблему, спасибо – rubdottocom

ответ

4

Вы должны использовать сценарий iphonestatic.command в MacOSX/для создания статической библиотеки и скопируйте заголовки для вас, как говорит README. Тогда все, что вам нужно сделать, это удалить эту папку в свой проект.

Если вы просто копируете источники в свой проект, вы почти наверняка пропускаете несколько очень важных флагов оптимизации. Не делай этого!

0

Я копирую структуру палочки-бурундука из шаблона cocos2d + chipmunk и строю ОК.

* Classes/Chipmunk/include/src for 'src' folder 
* Classes/Chipmunk/chipmunk for 'include' folder 
0

У меня был тот же вопрос этого дня, и я сделал это:

1.- Перейти к проекту -> Добавить в проект и найти файл cocos2d-iphone-0.99.5, то изнутри, что каталог Я добавил Внешний каталог (содержащий файлы бурундук). Обязательно установите флажок рядом с Копировать элементы в папку целевой группы (если необходимо), а затем нажмите кнопку «Добавить».

2.- Я это руководство: http://monoclestudios.com/cocos2d_whitepaper.html (в середине страницы есть вся информация, нужно добавить бурундук)

3.- Изменение #include «ТРУДНОСТЬ/util.h» декларации: "#include util.h"

думаю.

0

Если вы используете CocoaPods:

  1. в Xcode клик по Бобы проект
  2. выберите бурундук-физика мишень
  3. в пути поиска набор Всегда Поиск путей пользователей к ДА
  4. i п Заголовок Пути поиска набор

"$ {PODS_ROOT}/Headers/Private/бурундука-физика" в рекурсивных и

"$ {PODS_ROOT}/Headers/Public/бурундук-физика" к рекурсивных

xcode screenshot

надеюсь, что это помогает кто-то