我是C ++的新手,我有兴趣编写一个简单的应用程序从互联网上下载HTTP文件并处理它的内容。无论如何,我找到了一个名为libcurl online的库。我去了以下网站:
http://curl.haxx.se/download.html
无论如何,我下载了curl-7.34.0.zip(源档案),里面包含很多文件夹。我怀疑我需要包含的文件夹是:
我使用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'
我不确定我遗漏了什么,或者我的文件夹目录是否被错误地使用了。您是否有任何建议可以帮助我通过源档案或二进制包构建这个?感谢。
答案 0 :(得分:1)
这里有几个问题:
#include <curl.h>
:您使用<>
表示 - 搜索包含目录。尝试将其替换为:#include "curl.h"
- 这意味着搜索项目并包含目录。但你应该做nr。 1 - 此代码不是您项目的一部分。这是卷曲项目的一部分。
修改强>
在评论中发布 - 这取决于你实际放置标题的位置。如果您将它们放在include\curl
目录中,请使用#include "curl/curl.h"
。
编辑问题后编辑
您需要指定.lib引用。
当你使用curl时,你不编译它。它已经被一些天才人员从卷曲编译成.dll
s的形式。您的程序不知道如何使用它们,除非您告诉它如何使用它们。为此,您必须通过提供所谓的lib
文件来更改链接器选项。 lib
文件可以告诉链接器它应该使用哪个.dll
。
我假设你有卷曲目录。除了include
之外,还应该有lib
。现在您需要做的是告诉链接器您需要libcurl.a
curl目录中的lib
。来吧:项目构建选项|链接器设置。在Link libraries
部分中,指定libcurl.a
的路径。