我试图使用共享库,到目前为止没有运气。 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链接(包含文件夹)
答案 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