首页 > 解决方案 > 编译使用 Open Dynamics Engine v0.13.1 的文件时出现“对 * 的未定义引用”错误

问题描述

我是组织 C++ 项目的初学者,我已经尝试启动 Open Dynamics Engine 项目一周了,但我一直遇到几个错误。首先,我做了什么:

但是当我运行我的 makefile 时,我收到以下错误:

gcc -Wall -g -DdDOUBLE -o test test.o -L/home/username/ode-0.13.1/ode/src/libode.la -L/home/username/ode-0.13.1/drawstuff/src/ libdrawstuff.la -L/usr/X11R6/lib -L/usr/lib -L/usr/local/lib -I。-I/home/username/ode-0.13.1/include/ -I/usr/X11R6/include -I/usr/include -lm -lode -lGL -lGLU /usr/local/lib/libode.a(collision_trimesh_box. o): 在函数dCalcVectorLength3': /home/username/ode-0.13.1/ode/src/../../include/ode/odemath.h:148: undefined reference tosqrt'/home/username/ode-0.13.1/ode/src/../../include/ode/odemath.h:148: 未定义对sqrt' /home/username/ode-0.13.1/ode/src/../../include/ode/odemath.h:148: undefined reference tosqrt'/usr/local/lib/ 的引用libode.a(util.o):在函数 sincos dxStepBody(dxBody*, double)': /home/username/ode-0.13.1/ode/src/util.cpp:618: undefined reference to'/home/username/ode-0.13.1/ode/src/util.cpp:630:未定义对sincos' /home/username/ode-0.13.1/ode/src/util.cpp:628: undefined reference tosqrt' /home/username/ode-0.13.1/ 的引用ode/src/util.cpp:590:未定义对“sqrt”的引用

...(这一直持续到页面)

/usr/local/lib/libode.a(OPC_AABBTree.o):在函数运算符 new[](unsigned long)' /home/username/ode-0.13.1/OPCODE/OPC_AABBTree.cpp:427:未定义的操作码Opcode::AABBTree::Build(Opcode::AABBTreeBuilder*)': /home/username/ode-0.13.1/OPCODE/OPC_AABBTree.cpp:413: undefined reference to引用operator new[](unsigned long)' /usr/local/lib/libode.a(OPC_AABBTree.o): In function::AABBTreeNode::~AABBTreeNode()': /home/username/ode-0.13.1/OPCODE/OPC_AABBTree.cpp:83: undefined reference to operator delete[](void*, unsigned long)' /usr/local/lib/libode.a(OPC_Collider.o): In functionOpcode::Collider::~Collider()': /home/username/ ode-0.13.1/OPCODE/OPC_Collider.cpp:54:未定义operator delete(void*, unsigned long)' /usr/local/lib/libode.a(OPC_Collider.o):(.data.rel.ro._ZTIN6Opcode8ColliderE[_ZTIN6Opcode8ColliderE]+0x0): undefined reference to对 __cxxabiv1::__class_type_info'/usr/local/lib/libode.a(OPC_Collider.o):(.data.rel.ro._ZTVN6Opcode8ColliderE[ _ZTVN6Opcode8ColliderE]+0x20):未定义对 `__cxa_pure_virtual' collect2 的引用:错误:ld 返回 1 退出状态 makefile:14:目标 'test' 的配方失败 make:*** [test] 错误 1

这些错误似乎库没有正确设置,但我很确定我已经正确安装并且我的 -L 设置为正确的路径。

注 1: ode 库中包含的演示可以工作。

注意 2:我之前曾尝试(但失败)安装其他版本的 ode。我尽力清理make uninstallmake clean清理了这些失败的安装,但我认为它们可能会影响新安装,因为当我sudo make install第一次运行时,会出现大量Nothing to do here...消息。

标签: c++installationode-library

解决方案


推荐阅读