尝试使用Box2D的b2Body :: SetUserDatavoid *时未定义的引用

问题描述

下面是一些简单的代码来重现该问题:

#include <box2d/box2d.h>

int main()
{
    b2World world(b2Vec2_zero);
    b2BodyDef bdef;
    b2Body* body = world.CreateBody(&bdef);
    body->SetUserData(body);
    return 0;
}

那应该根据我读过的所有内容进行编译,并且(对于脚步者)我猜它在技术上可以编译,但是当我尝试(使用g++ test.cpp -lbox2d)时,我得到了一个链接错误:

/usr/bin/ld: /tmp/ccgHfvqv.o: in function `main':
test.cpp:(.text+0x75): undefined reference to `b2Body::SetUserData(void*)'
collect2: error: ld returned 1 exit status

我尝试用Google搜索"undefined reference to b2Body::SetUserData(void*)",但是没有找到结果。

我也尝试通过b2BodyDef进行设置,但是该结构中的userData成员的工作方式似乎有所不同,指向带有单个b2BodyUserData的{​​{1}}结构成员,似乎并未设计为容纳用户数据指针,因为在该成员中设置地址会导致Box2D稍后写入该地址,从而破坏数据。 (我使用GDB观察点进行了检查。)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)