Как включить библиотеки Chipmunk в проект iPhone Xcode? - PullRequest
1 голос
/ 18 августа 2010

[решено]

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

  • Classes / Бурундук / include / src для папки 'src'
  • Классы / Бурундук / Бурундук для папки «include»

Спасибо Бете за попытку помочь.

:::::

Я скачиваюchipmunk 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

Я не уверен в правильном добавлении библиотек Chipmunk, какие источники из chipmunk .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

Ответы [ 4 ]

4 голосов
/ 19 августа 2010

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

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

0 голосов
/ 02 декабря 2015

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

  1. в xCode, нажмите на Бобы проект
  2. выберите Бурундук-физика цель
  3. в Пути поиска установить Всегда искать пути пользователя в ДА
  4. в Пути поиска заголовка установить

"$ {PODS_ROOT} / Заголовки / Частные / Сибирская физика" до Рекурсивные и

"$ {PODS_ROOT} / Заголовки / Общественные / Сфера Рекурсивно

xcode screenshot

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

0 голосов
/ 25 апреля 2011

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

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

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

3.- Измените объявление #include "constraints / util.h" на: "#include util.h"

Я думаю, что сделано.

0 голосов
/ 20 августа 2010

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

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