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

2023-05-16

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Demo-简单使用libcurl静态库访问网址 的相关文章

随机推荐

  • 树莓派简易人脸追踪云台

    前言 xff1a 这篇文章属于此系列 xff1a 一个用树莓派做的会聊天 xff0c 能人脸识别 xff08 支持云台追踪 xff09 和发送邮件的小玩具 https blog csdn net yonglisikao article de
  • Android JNI调用概要

    一 Java调C 编写Native方法 使用javah命令生成 h头文件 复制 h头文件到CPP工程中 复制jni md h和jni h到CPP工程中 实现 h头文件中生成的 生成dll文件 C的函数名称 xff1a Java 包名 方法名
  • curl的请求头与响应头获取

    1 从CURL中获取响应头 oCurl 61 curl init 设置请求头 有时候需要 有时候不用 看请求网址是否有对应的要求 header 61 34 Content type application x www form urlenc
  • C++头文件包含顺序问题

    C 43 43 中类的声明和类的定义分开几乎成了一个不成文的规定 这样做的好处是使得类的声明和实现分开 xff0c 清晰明了 xff0c 同时便于库函数发布 但是在实际编程中由此也常常引起了一些由于头文件的包含顺序问题而产生的符号未定义的编
  • 详解printf重定向到文件中,打印日志的实现

    printf是将信息打印到终端 xff0c 但是有时当我们需要打印的信息比较多时 xff0c 终端无法将所有信息都能够保留在屏幕上 xff0c 这样我们就不能在终端获取我们想要的信息了 xff0c 重定向很好的帮我们解决了这个问题 xff0
  • 计划

    文档计划 读书的时候 2010年左右 由于和导师做了一些涉及单片机的项目 xff0c 狠狠熟悉了一把C语言 xff0c 所以试图写一个实时内核 xff0c 但是由于涉及大量的硬件知识 xff0c 底层汇编和任务栈之类的东西 xff0c 而这
  • CMOS内核--序言

    CMOS内核 序言 本文介绍一些CMOS中需要用的基础知识 由于在单片机系统中不会有MMU所以单片机系统中的每个任务就是一个线程 xff0c 共用系统的地址空间 xff0c 为了精确性 xff0c 后文中措辞中使用线程替换任务 xff0c
  • 欧拉角和旋转矩阵之间的转换

    一 什么是欧拉角 在3D 空间中 xff0c 表示物体的旋转可以由三个欧拉角来表示 xff1a pitch围绕X轴旋转 xff0c 叫俯仰角 yaw围绕Y轴旋转 xff0c 叫偏航角 roll围绕Z轴旋转 xff0c 叫翻滚角 这三个角的顺
  • C++编译之(1)-g++单/多文件/库的编译及C标准的发展历程

    g 43 43 编译入门 本文为您介绍g 43 43 的编译用法 xff1b 通过从最简单的单文件编译 xff0c 到多文件编译 xff0c 再到动态库 静态库的编译及使用 xff1b 例子都经过实际编译并运行 xff0c 可谓全网最良心之
  • STM32F103-寄存器开发-2

    上一篇博客中我已经配置好了对应的时钟 xff0c 接下来就是对GPIOC口进行操作了 为此我们需要配置端口配置寄存器 xff0c 但是在用户手册中查阅 xff0c 可以发现有两个寄存器 xff0c CRL和CRH xff0c 我们应该使用哪
  • 25.UART串口发送过程与配置

    UART串口收发过程与配置 参考资料 STM32Fx中文参考手册 第26章 xff1a 通用同步异步收发器章节 开发板配套教程 STM32Fx开发指南 串口实验章节 笔记基于正点原子官方视频 视频连接https www bilibili c
  • c语言HTTP服务器,超级简易版。

    算是对linux多线程的复习把 xff0c 尝试这用socket写了一个简单的HTTP服务器 xff0c 当访问它的时候它会给你发送一个HTML文件 xff0c 这个HTML文件需要自己写 代码 span class hljs prepro
  • linux POST请求

    linux POST请求 curl https baidu com X POST H key1 value1 H key2 value2 d name test age 23 i 说明 xff1a H header 后接key value对
  • CPPREST处理跨域问题

    本例使用的代码框架非常简单 按照下面这个路径搭建即可 https blog csdn net youyicc article details 108261287 问题由来 网页端需要动态检测C 服务器这边服务是否正常运行 所以采用的方式是h
  • 内存存取区——堆和栈

    一 预备知识 程序的内存分配 一个由c C 43 43 编译的程序占用的内存分为以下几个部分 1 栈区 xff08 stack xff09 由编译器自动分配释放 xff0c 存放函数的参数值 xff0c 局部变量的值等 其操作方式类似于数据
  • ROS中RVIZ坐标系及TF坐标系转换

    RVIZ坐标系 X轴 红色 Y轴 绿色 Z轴 蓝色 YAW 偏航角 绕Z轴旋转 PITCH 俯仰角 绕Y轴旋转 ROLL 滚转角 绕X轴旋转 符合右手坐标系原则 利用TF进行坐标系转换 采用以下指令进行转换 xff0c 其中frame id
  • 【C语言】长度为0的数组

    最近在看代码的时候发现一个好玩的事情 xff0c 长度为0的数组 xff0c 在此记录一下 在网上看到的这个说是只有GNU C才支持的特性 xff0c 因此考虑跨平台或者可移植特点需要慎用 话不多说 xff0c 上案例才有感觉 span c
  • jetson xavier nx使用usb线刷机后开机黑屏闪屏

    情况一 比较常见 xff09 由于刷机是的flash接口是调在右边的 xff0c 如下图所示 解决方法 xff1a 故在刷机成功后 xff0c 连接显示屏后要将flash接口调到 左侧 情况二 在对jetson xavier nxs进行刷机
  • python牛客网输入输出处理

    python 笔试输入 sys stdin readline和input 非常有用 xff01 xff01 xff09 https www jianshu com p 6f14ca3290ee input vs sys stdin read
  • Demo-简单使用libcurl静态库访问网址

    在开始前请先准备好下面的文件 xff1a 1 调试版的libcurl静态库libcurld lib xff0c 可以在网上下载或自己编译 xff1b 2 头文件 xff0c curl h curlver h easy h mprintf h