用c ++链接本地库(macOS High Sierra)

时间:2018-04-13 09:39:30

标签: c++ cmake clion macos-high-sierra

我试图将名为apriltags的库链接到我的c ++项目。我已经下载了源文件,将它们放在我的项目中并设置了CMakeLists.txt,以便我的类中的导入工作正常。但是,存在引用问题,因此在使用构建时出现以下错误: $ /Applications/CLion.app/Contents/bin/cmake/bin/cmake --build "/Users/petter/Desktop/MSc Project/autonomous-car/cmake-build-debug" -- target autonomous_car -- -j 2

错误:

[ 50%] Linking CXX executable bin/autonomous_car
        Undefined symbols for architecture x86_64:
"AprilTags::TagDetector::extractTags(cv::Mat const&)", referenced from:
_main in main.cpp.o
"AprilTags::TagFamily::TagFamily(AprilTags::TagCodes const&)", referenced from:
AprilTags::TagDetector::TagDetector(AprilTags::TagCodes const&) in main.cpp.o
        ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [bin/autonomous_car] Error 1
make[2]: *** [CMakeFiles/autonomous_car.dir/all] Error 2
make[1]: *** [CMakeFiles/autonomous_car.dir/rule] Error 2
make: *** [autonomous_car] Error 2

这是我的代码:

#include <iostream>
#include <cstring>
#include <vector>
#include <sys/time.h>
#include <AprilTags/TagDetector.h>
#include <AprilTags/Tag36h11.h>
#include <eigen3/Eigen/Dense>

using namespace AprilTags;
using namespace cv;

int main() {
    VideoCapture cap(0); // open the default camera
    if (!cap.isOpened()) // check if we succeeded
        return -1;

    namedWindow("view", 1);
    TagCodes tag_codes = tagCodes36h11;
    TagDetector* detector = NULL;
    detector = new TagDetector(tag_codes);

    for (;;) {
        Mat frame;
        cap >> frame; // get a new frame from camera
        vector<TagDetection> det = detector->extractTags(frame);
        imshow("view", frame);
        if (waitKey(30) >= 0) break;
    }
    return 0;
}`

这是我的CMakeLists.txt:

cmake_minimum_required(VERSION 3.10)
project(autonomous_car)

set(SOURCE_FILES main.cpp )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

add_executable(autonomous_car ${SOURCE_FILES})
add_library(apriltags ${SOURCE_FILES})

find_package(OpenCV REQUIRED)
find_package(Sdl2 REQUIRED)
find_package(PkgConfig)
pkg_check_modules(EIGEN3 REQUIRED eigen3)
include_directories(${EIGEN3_INCLUDE_DIRS})

target_link_libraries(apriltags)
target_link_libraries(autonomous_car ${OpenCV_LIBS})
target_link_libraries(autonomous_car ${Eigen_LIBS})
target_link_libraries(autonomous_car ${Sdl2_LIBS})

include_directories(apriltags . )
include_directories(${Eigen_INCLUDE_DIRS})
include_directories(${OpenCV_INCLUDE_DIRS})
include_directories(${Sdl2_INCLUDE_DIRS})

项目结构: project structure

0 个答案:

没有答案