在C中使用ODE时未定义的符号

时间:2012-10-08 09:45:47

标签: c xcode macos linker ode-library

我正在尝试在Xcode 4.5.1(MacOS 10.8)上的C项目中使用ODE。我用了

./autogen.sh
./configure
make
sudo make install

安装lib。然后我尝试编译测试程序:

#include <stdio.h>
#include <ode/ode.h>

int main(int argc, const char * argv[]) {
    dWorldID world = dWorldCreate();
    return 0;
}

我在构建设置 - &gt;预处理器宏中添加了dSINGLE,在我的Xcode项目中添加了libode.a

当我尝试构建和运行时,我遇到了一堆错误,比如

  

架构x86_64的未定义符号:
    “std :: terminate()”,引自:         _dJointGroupCreate in libode.a(ode.o)
        libode.a(ode.o)中的_dBodyCreate
        libode.a(ball.o)中的dxJointBall :: dxJointBall(dxWorld *)
        libode.a(ball.o)中的dxJointBall :: dxJointBall(dxWorld *)
        libode.a中的dxJointFixed :: dxJointFixed(dxWorld *)(fixed.o)
        libode.a中的dxJointFixed :: dxJointFixed(dxWorld *)(fixed.o)
        libode.a中的dxJointHinge :: dxJointHinge(dxWorld *)(hinge.o)
        ...
      。
      。
      。
      点。

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

如果我创建一个C ++项目而不是C项目,那么相同的过程可以正常工作。

我是否忘记在构建设置中添加内容以使其正常工作?

1 个答案:

答案 0 :(得分:0)

解决了添加

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk/usr/lib/libstdc++.dylib

到Xcode项目。