Неопределенная ошибка ссылки при попытке включить заголовок из того же проекта - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть метод, который я определил следующим образом:

int generate(const char* infile, std::vector<uint8_t> &detection, int another_flag);

Я хотел, чтобы detection был ссылкой на вектор, переданный в него (отсюда и &), так что изменения в этом методе происходит с оригиналом и зависает при выходе из метода.

Я встроил этот метод в общую библиотеку. В том же проекте я написал тестовую программу, которая импортирует заголовок:

#import <extract.hpp>

В тестовой программе я вызываю метод, подобный следующему:

    const char* infile = argv[1];
    std::vector<uint8_t> detection;
    int ret;
    ret = generate(infile, detection, 0); 

Он компилируется, но он не будет связываться, жалуясь:

undefined reference to `generate(char const*, std::vector<unsigned char, std::allocator<unsigned char> >&, int)'

Я пытаюсь собрать проект с помощью cmake. Запись для тестового файла выглядит следующим образом:

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include) <-- the location of extract.hpp
add_executable(harness harness.cpp)
target_include_directories(harness PRIVATE include) <-- desperate attempt
target_link_libraries(harness ${CV_LIBS})

Ссылка на этот файл содержится в другом файле CMakeLists с помощью команды add_subdirectory(test).

Что я делаю не так?

1 Ответ

0 голосов
/ 09 апреля 2020

Мы только что обнаружили, что это не связывает библиотеку. Очевидно, его нужно было добавить к вызову target_link_libraries, чтобы оно было:

target_link_libraries(harness ${CV_LIBS} extract)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...