2016-04-07 8 views
0

私は、OpenCVモジュールを作成して、Kurento Media Serverに接続します。 私はlib curlを使ってURLからファイルを読みます。次のようにKurento:OpenCVモジュールのリンクライブラリ

私が持っているコードは次のとおりです。

#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警告:シンボルcurl_easy_performライブラリ
のdpkg-shlibdepsのどれで見つかった:警告:ライブラリ
のdpkg-shlibdepsのいずれシンボルがライブラリ
のdpkg-SHLのいずれにおいても認められなかっcurl_easy_setopt警告:ibdepsシンボルがライブラリなしで見られるcurl_easy_init

私の推測では、どのように私はこれらのライブラリをリンクする必要がありますCMakeLists.txt

にライブラリをリンクに問題があるということでしょうか?
target_link_libraries()は正しい方法ですか?もしそうなら、構文は何ですか?



編集:

これらは、私がこれまで試した方法があります。


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

あなたは[こちら] target_link_libreariesの例を見つけることができます(https://github.com/Kurento/kurento-media-サーバ/ blob/15f6a5f12e336292abe78b28afe57946d860be84 /サーバ/ CMakeLists.txt#L29)。 – igracia

+0

どうやってリンクしていますか? – santoscadenas

+0

は、私が試してみた: target_link_libraries(カール)と SET($ {} CURL_LIBRARIES) の両方が動作しませんでした。 – AVB

答えて

3
行われている必要があり、他のメインフォルダのプロジェクト CMakeLists.txt

は、あなたが追加する必要があります。

pkg_check_modules(CURL REQUIRED curl) 

は、その後、あなたが次のようにCMakeLists.txtファイルを変更する必要がsrc/serverフォルダ内:

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

は私がsantoscadenas's answerを試してみましたしかし、それは動作しませんでした。

私はメインフォルダプロジェクトのCMakeLists.txtlibcurlcurlを変更する必要がありました:

pkg_check_modules(CURL REQUIRED libcurl) 
関連する問題