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

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值