Demo-简单使用libcurl静态库访问网址

来源:互联网 发布:sql left join where 编辑:程序博客网 时间:2024/06/05 20:36

在开始前请先准备好下面的文件:

1. 调试版的libcurl静态库libcurld.lib,可以在网上下载或自己编译;

2. 头文件,curl.h、curlver.h、easy.h、mprintf.h、multi.h、stdcheaders.h、types.h,在官网http://curl.haxx.se/download.html下载curl-7.32.0.zip,并在里面找到这7个头文件。

 

下面开始简单使用libcurl静态库访问网址,并在控制台输出该网址的页面内容:

1.      打开vc6.0,新建win32 控制台程序,工程名为LibcurlTest

2.      打开工程路径,将静态库libcurld.lib移到该工程路径下

3.      右键工程LibcurlTest->设置-> 连接->输入,在“对象/库模块”里面的末尾添加libcurld.lib,用空格与前面的隔开

4.      打开工程路径,新建include文件夹,在include文件夹下新建curl文件夹,把7个头文件移到curl文件夹中

5.      新建test.cpp, 代码如下:

#include <stdio.h>

#include <curl/curl.h>

 

int main(void)

{

 CURL *curl;

 CURLcode res;

 char* content;

 

 curl = curl_easy_init();

 if(curl) {

   curl_easy_setopt(curl, CURLOPT_URL, "http://curl.haxx.se/");

   res = curl_easy_perform(curl);

 

   /* always cleanup */

   curl_easy_cleanup(curl);

  }

 return 0;

}

6.      右键工程LibcurlTest-> Header Files->添加文件到目录,添加7个头文件

7.      右键工程LibcurlTest->组建,生成LibcurlTest.exe

8.      执行LibcurlTest.exe,控制台将输出访问http://curl.haxx.se/网址返回的页面内容

 

组建过程可能出现的错误:

1.      Cannot open include file:'curl/curl.h': No such file or directory

这个错误说明编译时没有发现'curl/curl.h'头文件,解决方法:

右键工程LibcurlTest->设置->C/C++->预处理器,在“附加包含路径”下添加include文件夹的路径,这样编译器就可以找到curl文件夹下面的头文件了。

 

2.  errorLNK2001: unresolved external symbol _curl_easy_cleanup

这个说明编译器在链接静态库时发生错误,导致无法解析curl_easy_cleanup函数,请确保前面的第三步配置正确,再来看下函数curl_easy_cleanup的定义:

CURL_EXTERN CURL *curl_easy_init(void);

CURL_EXTERN CURLcode curl_easy_setopt(CURL*curl, CURLoption option, ...);

CURL_EXTERN CURLcode curl_easy_perform(CURL*curl);

CURL_EXTERN void curl_easy_cleanup(CURL*curl);

再找下CURL_EXTERN的定义:

#if defined(BUILDING_LIBCURL)

#define CURL_EXTERN  __declspec(dllexport)

#else

#define CURL_EXTERN  __declspec(dllimport)

#endif

从这里可以发现少了个宏定义BUILDING_LIBCURL,因为我们需要从静态库里面导出函数,以被其他程序调用,解决方法:

右键工程LibcurlTest->设置-> C/C++->预处理器,在“预处理器定义”下的末尾添加BUILDING_LIBCURL,用逗号与前面的隔开。

 

3.      error LNK2001: unresolvedexternal symbol __imp__WSACleanup@0

少了依赖库Ws2_32.lib,解决方法:

右键工程LibcurlTest->设置-> 连接->输入,在“对象/库模块”里面的末尾添加Ws2_32.lib,用空格与前面的隔开

 

4.      error LNK2001: unresolvedexternal symbol __imp__ldap_unbind_s

少了依赖库Wldap32.lib,解决方法:

右键工程LibcurlTest->设置-> 连接->输入,在“对象/库模块”里面的末尾添加Wldap32.lib,用空格与前面的隔开

 

5.      MSVCRTD.lib(MSVCRTD.dll) :error LNK2005: _calloc already defined in LIBCD.lib(dbgheap.obj)

   MSVCRTD.lib(MSVCRTD.dll): error LNK2005: _realloc already defined in LIBCD.lib(dbgheap.obj)

这是MSVCRTD.lib库与LIBCD.lib发生冲突,解决方法:

右键工程LibcurlTest->设置-> 连接->输入,在“忽略库”里面的末尾添加libcd.lib

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 摊上家暴的父亲怎么办 家暴警察不处理怎么办 父亲把母亲打了怎么办 u盘的文件打不开怎么办 头撞墙起包了怎么办 儿童头撞墙起包怎么办 头撞墙了鼓包了怎么办 北京65岁老年证怎么办 怎么办65岁免费乘车卡 5个月小孩晚上哭怎么办 婴儿要含奶头睡怎么办 我把输入法删了怎么办 头发干枯毛躁怎么办用什么洗发水 落枕后脖子歪了怎么办 睡觉睡得脖子疼怎么办? 婴儿脖子睡歪了怎么办 怀孕8个月肚皮痒怎么办 怀孕大阴唇肿了怎么办 孕妇肚皮撑的疼怎么办 我大阴唇特别长怎么办 切完洋葱辣眼睛怎么办 下昆山车没刷卡怎么办 高德地图用不了怎么办 玩游戏老是闪退怎么办 苹果平板电脑闪退怎么办 钉钉忘记打卡了怎么办 钉钉手机号换了怎么办 玖富叮当贷逾期怎么办 玖富超能怎么办现金贷 包包的油边开裂怎么办 lv包包油边开裂怎么办 lv钱包油边开裂怎么办 德运奶粉没勺子怎么办 音响坏了没声音怎么办 6s蓝牙无法配对怎么办 魅族耳机进水了怎么办 苹果6耳机进水了怎么办 耳机内部线坏了怎么办 酷狗m1开不开机怎么办 小米2s蓝牙坏了怎么办 苹果手机蓝牙坏了怎么办