이 문제에 대한 여러 게시물을 읽었지만 특별히 도움이되는 내용을 찾지 못했습니다. 두 명의 스프라이트가 컨택트 리스너를 사용하여 만날 때 용접 조인트를 만들려고합니다. 나는 다음과 같은 오류가 계속 :Apple Mach-O Linker (Id) 오류 문제
Apple Mach-O Linker (Id) Error
"_touchingBodies", referenced from:
SubcContactListener::BeginContact(b2Contact*) in SubcContactListener.o
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
가 여기 내 연락처 청취자입니다. SubcContactListener.h :
#import <Foundation/Foundation.h>
#import "cocos2d.h"
#import "Box2D.h"
#import <vector>
typedef std::pair<b2Body*, b2Body*> bodyPair;
typedef std::vector<bodyPair> thingsThatTouched;
extern thingsThatTouched touchingBodies;
class SubcContactListener : public b2ContactListener {
public:
void BeginContact(b2Contact* contact);
void EndContact(b2Contact* contact);
};
SubcContactListener.mm :
#import "SubcContactListener.h"
void SubcContactListener:: BeginContact(b2Contact *contact) {
touchingBodies.push_back(std::make_pair(contact->GetFixtureA()->GetBody(), contact->GetFixtureB()->GetBody()));
}
제가 첨가 다음 HelloWorldLayer.h 인터페이스
thingsThatTouched touchingBodies;
.
마지막으로합니다 (타임 스텝 후) HelloWorldLayer.mm의 틱 방법 :
b2WeldJointDef weldJointDef;
b2WeldJoint *weldJoint;
for (int i = 0; i < touchingBodies.size(); i++) {
b2Body* bodyA = touchingBodies[i].first;
b2Body* bodyB = touchingBodies[i].second;
weldJointDef.Initialize(bodyA, bodyB, bodyA->GetWorldCenter());
weldJointDef.collideConnected = false;
weldJoint = (b2WeldJoint*)world->CreateJoint(&weldJointDef);
}
touchingBodies.clear();
이 도와주세요, 나는 잠시 동안 그것을있었습니다.