【发布时间】:2017-08-03 21:50:13
【问题描述】:
我目前正在尝试添加此处找到的 RaspiCam 库:
https://sourceforge.net/projects/raspicam/?source=typ_redirect
到此处找到的 Apriltags 库:
http://people.csail.mit.edu/kaess/apriltags/
我解压缩 RaspiCam 库并单独构建它,然后将其复制并粘贴到 AprilTags 文件夹中。我的 AprilTags 文件夹现在看起来像这样:
AprilTags build cmake CMakeLists.txt example LICENSE Makefile pod-build raspicam-0.1.6 README.txt src systems.txt tags
在 raspicam-0.1.6 文件夹内是这样的:
build Changelog CMakeLists.txt CMakeLists.txt.user cmake_uninstall.cmake.in dependencies README src utils
我将来自 raspicam 的库添加到 AprilTags 代码的顶部标记为:
#include <raspicam/raspicam_cv.h>
它会在我构建时检测到它。我知道这一点是因为我故意把库写错了,例如。 raspicam_cvv.h,它给了我一个错误,因为没有这样的库。所以它肯定链接。但是,当我尝试在代码中使用该库时,例如
raspicam::RaspiCam_Cv Camera;
它给出了这个错误:
CMakeFiles/apriltags_demo.dir/apriltags_demo.cpp.o: In function `main':
apriltags_demo.cpp:(.text.startup+0x2d4): undefined reference to `raspicam::RaspiCam_Cv::RaspiCam_Cv()'
apriltags_demo.cpp:(.text.startup+0x324): undefined reference to `raspicam::RaspiCam_Cv::~RaspiCam_Cv()'
apriltags_demo.cpp:(.text.startup+0x384): undefined reference to `raspicam::RaspiCam_Cv::~RaspiCam_Cv()'
collect2: error: ld returned 1 exit status
example/CMakeFiles/apriltags_demo.dir/build.make:139: recipe for target 'bin/apriltags_demo' failed
make[3]: *** [bin/apriltags_demo] Error 1
CMakeFiles/Makefile2:193: recipe for target 'example/CMakeFiles/apriltags_demo.dir/all' failed
make[2]: *** [example/CMakeFiles/apriltags_demo.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make[1]: *** [all] Error 2
Makefile:27: recipe for target 'all' failed
make: *** [all] Error 2
作为未定义的引用。我在网上做了一些研究,在这里找到了一个类似的查询:library is linked but reference is undefined 解决方案是更改链接的顺序。但是,因为这两个项目都是使用 CMake 构建的,所以我不知道您将如何更改链接顺序。老实说,总的来说,我在使用 C++ 构建方面有点迷茫,因此非常感谢任何帮助或指导。谢谢!
【问题讨论】:
标签: c++ static-linking undefined-reference