繁体   English   中英

在C ++应用程序中无法构建/编译libcurl

[英]Trouble building/compiling libcurl in C++ Application

我是C ++的新手,有兴趣编写一个简单的应用程序以从Internet下载HTTP文件并处理其内容)。 无论如何,我在线上找到了一个名为libcurl的库。 我去了以下网站:

http://curl.haxx.se/download.html

  1. 我应该下载源归档文件还是二进制软件包(Win64 MinGW64)? 使用源归档和二进制pkg有什么区别和优点/缺点?
  2. 自编写C ++应用以来,是否应该使用curlcpp绑定? 如何将curlcpp绑定与此合并?

无论如何,我下载了curl-7.34.0.zip(源档案),并且在里面,它包含许多文件夹。 我怀疑我需要包含的文件夹是:

  • 包括
  • LIB
  • SRC

我使用了CodeBlocks IDE。 我“递归地”将文件夹“ include / curl”添加到我的项目中。 看起来像这样:

在此处输入图片说明

我的main.cpp包含以下代码(取自网站上的示例应用程序):

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

int main()
{
    CURL *curl;
    CURLcode res;

    curl = curl_easy_init();
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "http://example.com");
        /* example.com is redirected, so we tell libcurl to follow redirection */
        curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);

        /* Perform the request, res will get the return code */
        res = curl_easy_perform(curl);

        /* Check for errors */
        if(res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
              curl_easy_strerror(res));

        /* always cleanup */
        curl_easy_cleanup(curl);

    }
    return 0;
}

尝试构建/编译时,我收到以下错误消息。

undefined reference to '_imp__curl_easy_init'
undefined reference to '_imp__curl_easy_setopt'
undefined reference to '_imp__curl_easy_perform'
undefined reference to '_imp__curl_easy_strerror'
undefined reference to '_imp__curl_easy_cleanup'

我不确定丢失了什么或者我的文件夹目录使用不正确。 您是否有任何建议可以帮助我通过Source Archive或Binary Package建立此文件? 谢谢。

这里有几个问题:

  1. 决不。 绝对不要将库头直接添加到您的项目中。 将它们复制到您的包含目录。
  2. #include <curl.h> :您使用<>表示-在包含目录中搜索。 尝试将其替换为: #include "curl.h" -表示搜索项目并包含目录。

但是你应该这样做。 1-因为此代码不属于您的项目。 它是curl项目的一部分。

编辑如评论中所述-它取决于您实际放置标题的位置。 如果将它们放在include\\curl目录中,请使用#include "curl/curl.h"

问题编辑后,您需要指定.lib引用。 使用curl时,您不会对其进行编译。 一些天才的家伙已经将它编译为从curl到.dll的形式。 除非您告诉程序如何使用,否则您的程序不知道如何使用它们。 为此,您必须更改链接器选项-通过提供所谓的lib文件。 lib文件可以告诉链接器应使用哪个.dll

我假设您有卷曲目录。 除了include之外, include应该有lib 现在您需要做的就是告诉链接器您需要curl的lib目录中的libcurl.a 继续: 项目构建选项| 链接器设置 在“ Link libraries部分中,指定libcurl.a的路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM