Я пишу модуль OpenCV для работы с Kurento Media Server. Я читаю файл с URL-адреса, используя lib curl.
Код у меня следующий:
#include<curl/curl.h>
size_t write_data(char *ptr, size_t size, size_t nmemb, void *userdata)
{
vector<uchar> *stream = (vector<uchar>*)userdata;
size_t count = size * nmemb;
stream->insert(stream->end(), ptr, ptr + count);
return count;
}
Mat curlImg(const char *img_url, int timeout=10)
{
vector<uchar> stream;
CURL *curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_URL, img_url);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &stream);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, timeout);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
return imdecode(stream, -1);
}
Mat image = curlImg(link);
При его сборке: я получаю следующие предупреждения, и результирующий пакет не установлен:
dpkg-shlibdeps: предупреждение: символ curl_easy_cleanup не найден ни в одной из библиотек
dpkg-shlibdeps: предупреждение: символ curl_easy_perform не найден ни в одной из библиотек
dpkg-shlibdeps: предупреждение: символ curl_easy_setopt не найден ни в одной из библиотек
dpkg-shlibdeps: предупреждение: символ curl_easy_init не найден ни в одной из библиотек
Я предполагаю, что есть проблема со связыванием библиотек в CMakeLists.txt
Итак, как мне связать эти библиотеки?
Является ли target_link_libraries() правильным способом? Если да, то каков синтаксис?
Изменить:
Это способы, которые я пробовал до сих пор.
1
SET(requiredlibs)
FIND_PACKAGE(CURL)
IF(CURL_FOUND)
INCLUDE_DIRECTORIES(${CURL_INCLUDE_DIR})
SET(requiredlibs ${requiredlibs} ${CURL_LIBRARIES} )
ELSE(CURL_FOUND)
MESSAGE(FATAL_ERROR "Could not find the CURL library and development files.")
ENDIF(CURL_FOUND)
2
target_link_libraries (curl)
3
SET(${CURL_LIBRARIES} )
CMakeList.txt
(по крайней мере, соответствующие части) - person santoscadenas   schedule 07.04.2016