2016-04-07 36 views
0

Kurento Media Server ile birlikte gitmek için bir OpenCV modülü yazıyorum. lib curl kullanarak bir URL'den dosya okuyorum.Kurento: OpenCV modülündeki bağlantı kütüphanesi

aşağıdaki Ben kodu olarak:

#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); 

o bina üzerine: Ben aşağıdaki uyarıları almak ve sonuçta paket yüklü değil:

dpkg-shlibdeps: uyarı: sembol curl_easy_cleanup bulundu uyarı: sembol curl_easy_perform kütüphaneleri
dpkg-shlibdeps hiçbirinde bulundu: uyarı: kütüphaneler
dpkg-shlibdeps hiçbiri sembol kütüphaneleri
dpkg-SHL hiçbiri bulundu curl_easy_setopt ibdeps: Uyarı: sembol curl_easy_init

Benim tahminim CMakeLists.txt yılında kütüphaneler

Peki nasıl bu kitaplıkları bağlanmalıdır bağlanırken bir sorun olmasıdır kütüphanelerin hiçbiri bulundu?
target_link_libraries() yöntemi doğru mu? Eğer öyleyse, sözdizimi nedir?



Düzenleme:

Bunlar şimdiye kadar denedim yollarıdır.


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}) 
+0

https://github.com/Kurento/kurento-media- sunucu/damla/15f6a5f12e336292abe78b28afe57946d860be84/sunucu/CMakeLists.txt # L29). – igracia

+0

Onları şimdi nasıl ilişkilendiriyorsunuz? Ben denedim – santoscadenas

+0

: target_link_libraries (curl) ve Hem işe yaramadı SET ($ {CURL_LIBRARIES}). – AVB

cevap

3
yapılır gerektirir diğer ana klasör projesinde CMakeLists.txt anda

, eklemek gerekir:

pkg_check_modules(CURL REQUIRED curl) 

Sonra şöyle CMakeLists.txt dosyasını değiştirmeniz gerekir src/server klasörde:

generate_code (
    MODELS ${CMAKE_CURRENT_SOURCE_DIR}/interface 
    SERVER_STUB_DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}/implementation/objects 
    SERVER_IMPL_LIB_EXTRA_LIBRARIES ${CURL_LIBRARIES} 
) 
-1

Ben santoscadenas's answer çalıştı , Ama çalışmadı.

Ben ana klasör projesinin CMakeLists.txt yılında libcurl için curl değiştirmek zorunda: (Sen target_link_librearies [buradan] bir örneğini bulabilirsiniz

pkg_check_modules(CURL REQUIRED libcurl)