0

私はC++に非常にlibcurl慣れていないので、次のコードでURLのソースを取得しようとしています:

#include<curl/curl.h>
#include<iostream>
using namespace std;

size_t curl_to_string(void *ptr, size_t size, size_t nmemb, void *data) {
    std::string *str = (std::string *) data;
    char *sptr = (char *) ptr;
    unsigned int x;

    for (x = 0; x < size * nmemb; ++x) {
        (*str) += sptr[x];
    }

    return size * nmemb;
}
int main(int argc, char *argv[]) {
    CURL *curl;
    CURLcode res;
    std::string pagedata;

    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://google.com");
        res = curl_easy_perform(curl);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, curl_to_string);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &pagedata);
        curl_easy_cleanup(curl);
    }
    cout << pagedata << endl;
    return 0;
}

次のようなリンカ エラーが発生しています。

undefined reference to `_imp__curl_easy_setopt' updater.cpp /ATVSiteDBManager/src   line 30 C/C++ Problem
undefined reference to `_imp__curl_easy_init'   updater.cpp /ATVSiteDBManager/src   line 28 C/C++ Problem
undefined reference to `_imp__curl_easy_setopt' updater.cpp /ATVSiteDBManager/src   line 32 C/C++ Problem
undefined reference to `_imp__curl_easy_perform'    updater.cpp /ATVSiteDBManager/src   line 31 C/C++ Problem
undefined reference to `_imp__curl_easy_cleanup'    updater.cpp /ATVSiteDBManager/src   line 35 C/C++ Problem
undefined reference to `_imp__curl_easy_setopt' updater.cpp /ATVSiteDBManager/src   line 33 C/C++ Problem

私はエクリプスを使用しています。しかし、それを機能させるために、インターネットの方法はどれも解決されていません。繰り返し試し-lcurlましたが、問題は解決しませんでした。しかし、私が最後に行ったのは、curllibcurl.dllのディレクトリからlib出力ディレクトリに をコピーし、同じディレクトリ内の という名前のファイルの名前libcurldll.aを変更するlibcurl.dll.aことでした。これにより、奇跡的に問題が解決され、コードは正常に動作します。

副作用なしでこの単純なタスクを達成する正しい方法はありますか?

4

0 に答える 0