Связывание curl в проекте с использованием CMake

У меня нет опыта работы с C ++, и мне нужно всего лишь внести небольшую корректировку в приложение C ++, чтобы выполнить HTTP-запрос для аутентификации пользователя.

Curlpp — вариант, но при включении библиотек я получаю ошибку при сборке:

Undefined symbols for architecture x86_64:
"curlpp::OptionBase::OptionBase(CURLoption)", referenced from:
app_idomsconnector::RTMPAppProtocolHandler::GetAuthPassword(std::string) in libidomsconnector.a(rtmpappprotocolhandler.cpp.o)
curlpp::OptionTrait<std::string, (CURLoption)10002>::clone() const in libidomsconnector.a(rtmpappprotocolhandler.cpp.o)

Как я понимаю, мне нужно добавить / связать библиотеку в файле CMAKELists.txt. Кто-нибудь может сказать мне, что именно мне нужно добавить? (работает OSX 10.8) Как я уже упоминал, у меня нет опыта работы с C ++, поскольку я использую Java большую часть времени.

3

Решение

Как я понимаю, мне нужно добавить / связать библиотеку в файле CMAKELists.txt.

Это именно то, что вы должны сделать 🙂

В C ++ у вас есть два типа файлов для использования, когда вы включаете библиотеку в ваш проект:

  • файлы заголовков, в которых объявляются имена символов (например, список слов)
  • объектные файлы, где стоит код (например, словарь, в котором слова фактически определены)

(это немного упрощено, но здесь это не важно)

Сообщение об ошибке говорит вам, что вы не предоставляете объектные файлы компилятору, поэтому он не знает, что означают некоторые слова (классы и функции), которые вы используете в своем проекте.

Если вы создаете исполняемый файл с именем «MyExecutable», вы должны иметь такую ​​строку

add_executable (MyExecutable …)

в вашем CMakeLists.txt.

После этой строки попробуйте добавить

target_link_libraries (MyExecutable curlpp)

Если у вас уже есть строка target_link_libraries с «MyExecutable», просто добавьте curlpp в другие библиотеки.

8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]