1、编译之前先看一下基本准则:调用程序和库要尽量在以前几个方面相同:

(1)、两者的字符集要相同:

(2)、两者的平台工具集要相同:

(3)、两者debug/release版本和编译平台位数要一致:

(4)、运行库模式要一致:

2、libcurl静态库版本的编译:

(1)、libcurl库的下载:https://github.com/curl/curl/releases

(2)、编译过程:

a、双击执行generate.bat

b、 启动vs工程,我这里要编译成vs2010版本,我启动的是VC10里面的:

c、 编译成静态库时需要设置如下,如果需要编译成动态库,选择DLL开头的:

d、添加预处理项目:BUILDING_LIBCURL​默认已经有这项、CURL_STATICLIB

e、编译库的生成目录:

3、libcurl的调用和测试:

(1)、在工程属性里面libcurl头文件路径和libcurl库文件路径;

(2)、 包含相应的头文件和引入相应的库文件:

#include <winsock.h>
#include <curl.h>
#pragma comment ( lib, "ws2_32.lib" )
#pragma comment ( lib, "winmm.lib" )
#pragma comment ( lib, "wldap32.lib" )
#pragma comment(lib, "Advapi32.lib")

(3)、简单测试,GET百度的首页:注意百度首页是UTF-8编码,获取后进行编码转换,否则中文会显示乱码。

void UTF8toANSI(CString &strUTF8)
{//获取转换为多字节后需要的缓冲区大小,创建多字节缓冲区  UINT nLen = MultiByteToWideChar(CP_UTF8, NULL, strUTF8, -1, NULL, NULL);WCHAR *wszBuffer = new WCHAR[nLen + 1];nLen = MultiByteToWideChar(CP_UTF8, NULL, strUTF8, -1, wszBuffer, nLen);wszBuffer[nLen] = 0;nLen = WideCharToMultiByte(936, NULL, wszBuffer, -1, NULL, NULL, NULL, NULL);CHAR *szBuffer = new CHAR[nLen + 1];nLen = WideCharToMultiByte(936, NULL, wszBuffer, -1, szBuffer, nLen, NULL, NULL);szBuffer[nLen] = 0;strUTF8 = szBuffer;//清理内存  delete[]szBuffer;delete[]wszBuffer;
}size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
{string data((const char*)ptr, (size_t)size * nmemb);*((stringstream*)stream) << data << endl;return size * nmemb;
}void CMy123Dlg::OnBnClickedButton1()
{curl_global_init(CURL_GLOBAL_ALL); // 首先全局初始化CURLCURL* curl = curl_easy_init(); // 初始化CURL句柄if (NULL == curl){return;}curl_easy_setopt(curl, CURLOPT_URL, "http://www.baidu.com");curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 3); curl_easy_setopt(curl, CURLOPT_TIMEOUT, 3);curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);//设置回调函数curl_easy_setopt(curl, CURLOPT_WRITEDATA, &out);//设置写数据CURLcode res = curl_easy_perform(curl);curl_easy_cleanup(curl);CString str = out.str().c_str();UTF8toANSI(str);AfxMessageBox(str);
}

(4)、结果:

libcurl-windows下静态库版本的编译-编译和调用非常顺利相关推荐

  1. 【Android 逆向】Android 逆向通用工具开发 ( Windows 平台静态库程序类型 | 编译逆向工具依赖的 Windows 平台静态库程序 )

    文章目录 一.Windows 平台静态库程序类型 二.编译逆向工具依赖的 Windows 平台静态库程序 一.Windows 平台静态库程序类型 在 Android 逆向通用工具 MobileGame ...

  2. windows平台下静态库(.lib)和动态库(.dll)使用

    一.静态库和动态库的区别 1. 静态库(.lib) 函数实现和变量的二进制文件 编译链接可执行程序时,静态库会直接展开到文件. 发布可执行程序时,不需要静态库. 编译出的可执行文件较大. 2. 动态库 ...

  3. Windows下FFmpeg各版本库文件下载

    ffmpeg主要是基于linux开发,当然它也支持windows,不过并不支持visual studio系列IDE(因为它使用了大量C99特性,而vs不支持C99). 要想在windows上使用 一可 ...

  4. windows下DGL库cuda版本安装

    windows下DGL库cuda版本安装 方法1 在dgl官网下 https://www.dgl.ai/pages/start.html 找到对应版本 根据命令安装 但是可能会出现安装成功,但是imp ...

  5. linux下静态库、动态库总结

    一.基本概念 1.1.什么是库        在 windows 平台和 linux 平台下都大量存在着库. 本质上来说库是一种可执行的二进制代码(但不可以独立执行),可以被操作系统载入内存执行. 由 ...

  6. 【Linux】Linux下静态库(.a)和动态库(.so)的制作和使用

    如有错误,欢迎大家指正,感谢! ​​​​​​​目录 一.程序工作过程简单介绍 1. 安装GCC 2. 源程序工作流程 3. 使用示例 4. gcc常用的编译参数选项 二.静态库的制作及使用 1. 库是 ...

  7. Linux环境下静态库的生成和使用 (.a文件)

    这一阵子的工作用到了linux,也用到了linux的静态库和动态库.正好对这一块儿一直不明白,趁此机会学习了一下.以下是笔记.先说一说linux下静态库的生成和使用方法. An archive (or ...

  8. Windows下Socket库的初始化和关闭

    文章目录 1 Windows下Socket库的初始化和关闭 1 Windows下Socket库的初始化和关闭 windows下使用Socket比较特殊,使用前我们需要对socket库进行初始化,使用完 ...

  9. linux安装了xml怎么编译,linux下libxml库的安装及编译

    linux下libxml库的安装及编译 1. 下载和安装LIBXML2 Libxml2是个C语言的XML程式库,能简单方便的提供对XML文件的各种操作,并且支持XPATH查询,及部分的支持XSLT转换 ...

最新文章

  1. SpringMVC中@RequestHeader
  2. 2021全球权威AI性能竞赛MLPerf最新榜单: 浪潮获18项冠军几近半壁江山
  3. 计算机背板知识,你知道背板的选购技巧吗?
  4. Win2008R2创建虚拟路由
  5. python编程是干嘛的-学 Python 都用来干嘛的?
  6. Python开发【第十九篇】:Python操作MySQL
  7. SqlServer2005海量数据存储过程分页(上)
  8. RecyclerView Widget 使用
  9. android camera无预览拍照 后台拍照
  10. HarmonyOS开源第三方组件 —— B站开源弹幕库引擎的使用
  11. 金蝶KIS专业版13.0视频教程
  12. Vue - 实现复制内容到剪贴板(一键复制)
  13. 第三章 代码的坏味道
  14. 打印小册子中断了怎么办
  15. R语言基础图形绘制——箱线图
  16. java kiwi_【Java拾遗】不可不知的 Java 序列化
  17. 9.29 正睿提高6
  18. 02、【江科大自化协stm32F103c8t6】笔记之【入门32单片机及EXTI外部中断初始化参数配置】
  19. mybatis之(Oracle,MySql)批量更新
  20. 排列组合乘法原理与加法原理

热门文章

  1. 开源阅读书源_拥有这款最强开源阅读软件,没有你找不到的书!
  2. 计算机仿真如何汇款,【计算机仿真杂志社】计算机仿真杂志社编辑部
  3. 量子计算与量子信息之Python-qiskit实现量子隐形传态
  4. 益盟指标修改_修改我的音高质量指标
  5. WINDOWS-API:关于线程 GetCurrentThread、GetCurrentThreadId、GetCurrentProcess、GetCurrentProcessId...
  6. moco系列学习总结
  7. Python学习之路 (五)爬虫(四)正则表示式爬去名言网
  8. 【什么是OTP?OTP介绍?】
  9. Ae:内置效果(合集)
  10. 解决 记事本打开无乱码而用UE打开乱码现象