【发布时间】:2012-10-08 09:45:46
【问题描述】:
我正在尝试在 Xcode 4.5.1 (MacOS 10.8) 上的 C 项目中使用 ODE。我用过
./autogen.sh
./configure
make
sudo make install
安装库。然后我尝试编译一个测试程序:
#include <stdio.h>
#include <ode/ode.h>
int main(int argc, const char * argv[]) {
dWorldID world = dWorldCreate();
return 0;
}
我在 Build Settings->Preprocessor Macros 中添加了 dSINGLE,在我的 Xcode 项目中添加了 libode.a。
当我尝试构建和运行时,我遇到了一堆错误,例如
架构 x86_64 的未定义符号:
“std::terminate()”,引用自:
_dJointGroup 在 libode.a(ode.o) 中创建
_dBodyCreate 在 libode.a(ode.o)
dxJointBall::dxJointBall(dxWorld*) 在 libode.a(ball.o)
dxJointBall::dxJointBall(dxWorld*) 在 libode.a(ball.o)
dxJointFixed::dxJointFixed(dxWorld*) 在 libode.a(fixed.o)
dxJointFixed::dxJointFixed(dxWorld*) 在 libode.a(fixed.o)
dxJointHinge::dxJointHinge(dxWorld*) 在 libode.a(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 项目,同样的过程也可以正常工作。
我是否忘记在构建设置中添加一些内容以使其正常工作?
【问题讨论】:
-
也许您忘记包含一些库。链接器在这里抱怨。所以也许你应该给链接器提供适当的库。
-
@RajTendulkar ODE 编译的唯一输出应该是
libode.a。我不知道在 C 程序中使用 lib 是否有什么特别的事情要做(在 C++ 中,同样的过程可以正常工作)。
标签: c xcode macos linker ode-library