Kurento:OpenCV模块中的链接库

Kurento:OpenCV模块中的链接库,opencv,curl,cmake,libcurl,kurento,Opencv,Curl,Cmake,Libcurl,Kurento,我正在编写一个与Kurento Media Server配套的OpenCV模块。 我正在使用lib curl从URL读取文件 我的守则如下: #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

我正在编写一个与Kurento Media Server配套的OpenCV模块。 我正在使用lib curl从URL读取文件

我的守则如下:

#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);
generate_code (
   MODELS ${CMAKE_CURRENT_SOURCE_DIR}/interface
   SERVER_STUB_DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/implementation/objects
   SERVER_IMPL_LIB_EXTRA_LIBRARIES ${CURL_LIBRARIES}
)
2

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)
target_link_libraries (curl)
SET(${CURL_LIBRARIES} )
3

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)
target_link_libraries (curl)
SET(${CURL_LIBRARIES} )

在主文件夹project
CMakeLists.txt
中完成其他要求的地方,您需要添加:

pkg_check_modules(CURL REQUIRED curl)
然后在文件夹
src/server
中,您需要修改CMakeLists.txt文件,如下所示:

#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);
generate_code (
   MODELS ${CMAKE_CURRENT_SOURCE_DIR}/interface
   SERVER_STUB_DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/implementation/objects
   SERVER_IMPL_LIB_EXTRA_LIBRARIES ${CURL_LIBRARIES}
)

在主文件夹project
CMakeLists.txt
中完成其他要求的地方,您需要添加:

pkg_check_modules(CURL REQUIRED curl)
然后在文件夹
src/server
中,您需要修改CMakeLists.txt文件,如下所示:

#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);
generate_code (
   MODELS ${CMAKE_CURRENT_SOURCE_DIR}/interface
   SERVER_STUB_DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/implementation/objects
   SERVER_IMPL_LIB_EXTRA_LIBRARIES ${CURL_LIBRARIES}
)
我试过了,但没有成功

我必须在主文件夹项目的
CMakeLists.txt
中将
curl
更改为
libcurl

pkg_check_modules(CURL REQUIRED libcurl)
我试过了,但没有成功

我必须在主文件夹项目的
CMakeLists.txt
中将
curl
更改为
libcurl

pkg_check_modules(CURL REQUIRED libcurl)

你可以找到一个target_link_libries的例子。你现在是如何链接它们的?我已经尝试过了:target_link_库(curl)和SET(${curl_库})都不起作用。试着用你尝试过的内容和你的
CMakeList.txt
文件(至少相关部分)@santocadenas编辑你的问题,我不知道如何链接它们,因此我没有在问题中添加它。通常我给出的可执行文件名在这里不起作用。你可以找到一个target_link_libries的例子。你现在如何链接它们?我已经尝试过了:target_link_库(curl)和SET(${curl_libraries})都不起作用。试着用你尝试过的内容和
CMakeList.txt
文件编辑你的问题(至少是相关部分)@santoscadenas,我不知道如何链接它们,因此我没有在问题中添加它。通常我给出的可执行文件名在这里可能不起作用。