在编译使用curl的代码时,在C ++中获取错误

时间:2013-01-04 13:58:43

标签: c++ curl

我找到相同的代码来从C ++的网页读取数据。就像那样:

#include <iostream>
#include <string>
#include <C:\curl\curl.h>
// Right path, I am sure.

static size_t WriteCallback(void *contents, size_t size, size_t nmemb, void *userp)
{
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}

int main(void)
{
    CURL *curl;
    CURLcode res;
    std::string readBuffer;

    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);

        std::cout << readBuffer << std::endl;
    }
    return 0;
}

但它没有按预期工作。以下是错误消息:

1>------ Build started: Project: deneme, Configuration: Debug Win32 ------
1>  deneme.cpp
1>deneme.obj : error LNK2019: unresolved external symbol __imp__curl_easy_cleanup referenced in function _main
1>deneme.obj : error LNK2019: unresolved external symbol __imp__curl_easy_perform referenced in function _main
1>deneme.obj : error LNK2019: unresolved external symbol __imp__curl_easy_setopt referenced in function _main
1>deneme.obj : error LNK2019: unresolved external symbol __imp__curl_easy_init referenced in function _main
1>C:\Users\nazif\Documents\Visual Studio 2010\Projects\deneme\Debug\deneme.exe : fatal error LNK1120: 4 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

我该如何解决这个问题?

基本上,我希望在我的C ++代码中使用curl来获取某个网页的内容。

2 个答案:

答案 0 :(得分:2)

#include <C:\curl\curl.h>只包含相关的函数原型等。您还需要做的是更新项目设置以告知链接器链接到相应的curl库。

由于您使用的是Visual Studio,请右键单击项目并选择属性。然后转到配置属性/链接器。然后转到Linker - &gt;输入并在curl.lib字段中输入您的lib文件的名称(C:\curl\中可能有Additional Dependencies)。

答案 1 :(得分:0)

按照这些说明进行操作

  

MSVC 6 IDE

     
     

最小的VC ++ 6.0参考工作区(vc6curl.dsw)可用于      源分发存档,以允许正确建立两个包括      项目,libcurl库和curl工具。

     

1)使用MSVC6的IDE打开vs / vc6 / vc6curl.dsw工作区。

     

2)从顶部菜单中选择“构建”。

     

3)从下拉菜单中选择“批量构建”。

     

4)确保“检查”了八个项目配置。

     

5)点击“构建”按钮。

     

6)一旦构建完八个项目配置,您就完成了。

     

动态和静态libcurl库以调试和发布版本构建,      并且可以在每个子目录中找到它们,dll-debug,dll-release,      lib-debug和lib-release,所有这些都位于'vs / vc6 / lib'子目录下。

     

以相同的方式创建四个curl可执行文件,每个可执行文件使用其各自的      图书馆。生成的curl可执行文件位于其自己的子目录中,      dll-debug,dll-release,lib-debug和lib-release,位于'vs / vc6 / src'子目录下。

     

这些参考VC ++ 6.0配置是使用动态CRT生成的。

     

有意地,这些参考VC ++ 6.0项目和配置不使用      第三方库,如OpenSSL或Zlib,以允许正确的编译      并且没有其他要求的所有新用户的配置。

     

如果您需要更多“涉及”的东西,您可以根据自己的需要进行调整,      或者从命令行探索上面描述的'MSVC'的makefile世界。

完成构建后,您将在其中一个文件夹中有一个.lib文件