好贷网好贷款

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

发布时间:2016-12-4 10:03:07 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Demo-简单使用libcurl静态库访问网址",主要涉及到Demo-简单使用libcurl静态库访问网址方面的内容,对于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 [email protected] 少了依赖库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

上一篇:链表操作(从尾到头打印链表,使用栈结构实现)
下一篇:Python学习笔记3--函数

相关文章

相关评论