wking's blog

  • 文章分类
    • 日常随笔
    • IT技术
    • 系统封装
    • 大航海时代
  • 关于博主
GOD'S IN HIS HEAVEN, ALL'S RIGHT WITH THE WORLD.
  1. 首页
  2. IT技术
  3. C++
  4. 正文

Visual Studio C++ libcurl库的静态链接库模式安装记录及便携式安装方法

2024-03-05 568点热度 12人点赞 0条评论

Visual Studio C++ libcurl库的静态链接库模式安装过程记录和一些避雷点,以及不需要修改VS项目配置的便携式安装方法。

下载

到https://curl.se/download.html下载最新版本,什么压缩格式都可以,下载后解压缩。本文中解压缩路径为D:\curl\,下文中出现该路径请自行替换为你的实际路径。

编译

首先一定要打开VS环境“Developer Command Prompt for VS 2022”的命令行,只有VS环境的命令行才自带编译命令,普通命令行没有编译环境。可以在开始菜单输入developer快速定位打开。

打开命令行后,切换到D:\curl\winbuild目录下,输入以下命令生成debug/release模式和x86/64平台的lib文件,或者你只需要哪个版本只生成对应版本的也可以。

1
2
3
4
nmake /f Makefile.vc mode=static DEBUG=yes MACHINE=x86
nmake /f Makefile.vc mode=static DEBUG=no MACHINE=x86
nmake /f Makefile.vc mode=static DEBUG=yes MACHINE=x64
nmake /f Makefile.vc mode=static DEBUG=no MACHINE=x64

生成结果如下图:

生成结果

生成的lib文件在D:\curl\builds目录下,分别为win32/64的debug和release模式。obj文件夹是中间过程文件夹,可删除。

复制

首先进入对应配置和平台的schannel目录,打开lib目录,重命名libcurl????.lib加上对应配置和平台名以便区分。比如libcurl-x86-debug.lib、libcurl-x64-release.lib。

然后复制:

  1. 在你的项目文件夹(以.vcxproj文件所在文件夹为基准)新建文件夹curl。
  2. 复制D:\curl\include\curl里的所有h文件到项目curl文件夹。
  3. 复制刚才重命名的几个lib文件到你项目curl文件夹。

项目curl文件夹最终如下图:

项目代码添加curl库

在项目的头文件中,添加代码:

libcurl
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#define CURL_STATICLIB  // libcurl需要
#pragma comment(lib, "wininet.lib")
#pragma comment(lib, "Ws2_32.lib")  // libcurl需要
#pragma comment(lib, "Wldap32.lib")  // libcurl需要
#pragma comment(lib, "Crypt32.lib")  // libcurl需要
#pragma comment(lib, "Normaliz.lib")  // libcurl需要
#include "curl/curl.h"
#ifdef _WIN64
#ifdef _DEBUG
#pragma comment(lib, "curl/libcurl-x64-debug.lib")
#else
#pragma comment(lib, "curl/libcurl-x64-release.lib")
#endif
#else
#ifdef _DEBUG
#pragma comment(lib, "curl/libcurl-x86-debug.lib")
#else
#pragma comment(lib, "curl/libcurl-x86-release.lib")
#endif
#endif

安装完成。然后就可以直接使用curl代码了。上面的代码可以不修改VS项目文件,只需要复制curl文件夹和添加代码到所有需要libcurl库的项目即可,避免每次给项目添加Libcurl库时还需要修改VS项目配置,改配置要改x86/64和debug/release一共四次配置太麻烦。

下面是最简单的示例程序:获取baidu首页并在屏幕上输出。

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include "header.h" // 里面有curl安装代码
int main()
{
    CURL* curl_handle;
    curl_global_init(CURL_GLOBAL_ALL);
    curl_handle = curl_easy_init();
    if(!curl_handle)return -1;
    curl_easy_setopt(curl_handle,CURLOPT_URL,"http://www.baidu.com");
    CURLcode res = curl_easy_perform(curl_handle);
    curl_easy_cleanup(curl_handle);
    curl_global_cleanup();
    return 0;
}

避雷点

CURL_STATICLIB 

必须添加预定义CURL_STATICLIB。否则编译自己项目时提示无法解析的外部符号错误。

额外的lib文件

必须链接额外的引用项Ws2_32.lib、Wldap32.lib、Crypt32.lib和Normaliz.lib。否则编译自己项目时提示无法解析的外部符号错误。

参考文章

How To Set-Up libcurl on Visual Studio 2019

C+URL:Libcurl的简单应用

本作品采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2024-03-06

wking

不管博客型博主

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

目录
  • 下载
  • 编译
  • 复制
  • 项目代码添加curl库
  • 避雷点
    • CURL_STATICLIB 
    • 额外的lib文件
  • 参考文章
标签聚合
大航海时代 wordpress 一支红杏 C++ win10 linux R6300V2 OneNote

COPYRIGHT © 2024 wkings.blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang