c++ - 全新安装的子弹物理引擎无法正确链接?

标签 c++ gcc shared-libraries bulletphysics

安装了相对较新的 ubuntu LTS,我按照此处找到的通用动态库构建说明进行操作:http://www.bulletphysics.org/mediawiki-1.5.8/index.php/Installation

安装看起来很顺利(没有错误或警告),之后我在/usr/local/include/bullet 中找到了所有必需的文件。我目前正在尝试通过以下 shell 命令编译文件:

g++ bulletTest.cpp -lGL -lGLU -I/usr/local/include/bullet/

bulletTest.cpp 是:

#include <iostream>
#include <btBulletDynamicsCommon.h>
int main (void)
{
    btBroadphaseInterface* broadphase;
    return 0;
}

这个文件没有任何内容,但是抛出了大量 undefined reference 错误,例如“/tmp/ccH09wLR.o:(.rodata._ZTV17btTypedConstraint[_ZTV17btTypedConstraint]+0x30): undefined reference to `__cxa_pure_virtual'”我在论坛/SO 上找不到任何其他投诉,所以我相信这一定是我的构建/安装有问题。在尝试 gcc 和 g++ 编译器时会发生这些类型的错误。

有人有想法吗?

编辑:将我的 shell 命令更改为 g++ bulletTest.cpp -lGL -lGLU -lBulletDynamics -lBulletCollision -lBulletSoftBody -lLinearMath -I/usr/local/include/bullet/

它编译但不运行,错误是:加载共享库时出错:libBulletDynamics.so.2.82:无法打开共享对象文件:没有这样的文件或目录

最佳答案

所以这是很多小东西。首先,不要引用“lbullet”引用每个所需的库:

g++ bulletTest.cpp -o bulletTest -lGL -lGLU -lBulletDynamics -lBulletCollision -lBulletSoftBody -lLinearMath -I /usr/local/include/bullet/

此外,我必须设置 LD_LIBRARY_PATH 变量

export LD_LIBRARY_PATH=/usr/local/lib

然后它会同时编译和运行。

关于c++ - 全新安装的子弹物理引擎无法正确链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37865912/

相关文章:

c++ - 重新分配 "random"崩溃

c++ - 从 vector 私有(private)继承,公开相等运算符

c - GCC 对未释放的堆 block 发出警告

c++ - 从 C 代码链接错误调用 C++ 函数(使用 gcc 进行链接)

java - 在 Java 中加载共享库的问题

c++ - 自定义 vector 类中的堆损坏错误

c++ - 如何将内存分配给大小为 10^9 的二维数组

linux - 当 MPI 中存在死锁时,如何在某个特定时间后停止(或终止)MPI_Recv?

java - JNI加载库

c++ - 如何防止 GDB 加载(大型)库的调试符号?