fla*_*006 1 c++ linker undefined-reference box2d
这是一些重现该问题的简单代码:
#include <box2d/box2d.h>
int main()
{
b2World world(b2Vec2_zero);
b2BodyDef bdef;
b2Body* body = world.CreateBody(&bdef);
body->SetUserData(body);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这应该根据我读过的所有内容进行编译,并且(对于学究来说)我猜它在技术上确实可以编译,但是当我尝试(使用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
Run Code Online (Sandbox Code Playgroud)
我尝试用谷歌搜索,"undefined reference to b2Body::SetUserData(void*)"但没有找到结果。
我也尝试通过设置它b2BodyDef,但userData该结构中的成员似乎工作方式不同,指向b2BodyUserData具有单个pointer成员的结构,该结构似乎没有设计用于保存用户数据指针,因为在那里设置地址会导致Box2D 稍后写入该地址,从而损坏数据。(我使用 GDB 观察点来检查这一点。)