如何在C ++中包含共享库? libORB_SLAM

时间:2016-07-08 17:36:26

标签: c++

我试图使用共享库,到目前为止没有运气。 lib被称为libORB_SLAM2.so,并使用以下代码进行编译:

https://github.com/MathewDenny/ORB_SLAM2

无论如何,我确实复制了我自己的项目中的Example文件夹中的mono_tum代码(只是这个文件)并试过 仅使用共享库来编译它。它说" System.h"未找到。 有人可以插话吗?

谢谢!

编辑:操作系统:ubuntu 12.04 gcc 4.6,我使用了以下链接器命令: gcc -L / home / user / Desktop / program / libs / lib -Wall -std = c ++ 11 -o test mono_tum.cc -lORB_SLAM2.so 致命错误:System.h:没有这样的文件或目录 编译终止。

对于System.h,请检查github链接(包含文件夹)

1 个答案:

答案 0 :(得分:1)

你来到这里

- (void)addListener:(id<ListenerProtocol>)listener {
    // ...
}

是编译器错误,而不是链接器错误。它告诉您编译器找不到mono_turn.cc第29行中包含的文件“System.h”:

error: System.h: No such file or directory compilation terminated.

您可以在存储库的“Include”目录中找到该文件。所以告诉你的编译器,在哪里找到它。使用像

这样的东西
#include<System.h>

然后,您应该确保库(文件名是libORB_SLAM2.so)是您告诉链接器搜索库的地方,您已经使用

执行此操作
gcc ... -I/path/to/your/repository/clone/Include ...

所以

gcc ... L/home/user/Desktop/program/libs/lib

应该输出一个有效的ls列表,只是为了确定。请注意,按照惯例,lib前缀和.so后缀不会传递给链接器,因此请将gcc标志更改为

ls L/home/user/Desktop/program/libs/lib/libORB_SLAM2.so

因此,作为下一步,我将尝试使用

编译您的项目
gcc ... -lORB_SLAM2