问题描述
下面是一些简单的代码来重现该问题:
#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 (将#修改为@)