curl库+openssl库windows编译

server/2025/3/29 23:15:02/

一、工具准备

Visual Studio 2008:确保安装了 C++ 开发工具。
Git:用于克隆 cURL 的源码。
Perl:可以从 ActiveState Perl 下载并安装。
NASM(可选):如果需要汇编优化,可以从NASM 官方网站 下载并安装。
在这里插入图片描述
注意:以下命令行用的都是VS2008这个命令提示工具!

openssl_7">二、openssl

-- 编译openssl(openssl-3.1.8)
perl Configure VC-WIN32 no-shared --prefix=D:\openssl_output -MTnmakenmake install

VC-WIN32:指定目标平台为 32 位 Windows。
no-shared:生成静态库。
–prefix=D:\openssl_output:指定安装目录。
-MT:强制使用静态 CRT(我项目编译时使用的是 MT,所以这里也用MT:)。

这里我用的工具是 VS 2008 ,太高的openssl版本,可能编译会有各种错误,没有多看,这个版本刚刚好,有兴趣的可以自己研究一下!

在这里插入图片描述

在这里插入图片描述

curl_30">三、curl

1、下载

//下载地址,下载源代码
https://github.com/curl/curl/releases

2、进入目录,执行配置文件生成脚本

cd D:\curl\curl-curl-8_11_1\curl-curl-8_11_1
buildconf.bat

3、进入winbuild目录进行编译

nmake /f Makefile.vc mode=static VC=9 WITH_SSL=static WITH_DEVEL=..\deps MACHINE=x86 RTLIBCFG=static ENABLE_IDN=no

注意,这里用的是VS2008的工具,所以VC=9,编译静态库,用的是static。WITH_DEVEL 是openssl放的位置
在这里插入图片描述
4、生成文件
在这里插入图片描述
看 libcurl-vc9-x86-release-static-ssl-static-ipv6-sspi 就行
在这里插入图片描述

四、可能会遇到的问题以及解决方案

1、curl使用报错error LNK2001: 无法解析的外部符号 __imp__CertCloseStore@8

解决方案:点击这里。

2、curl使用报错error LNK2001: 无法解析的外部符号 __imp__curl_easy_setopt
解决方案:点击这里。

3、curl库使用报错error LNK2001: 无法解析的外部符号 __imp__IdnToAscii@20
解决方案:点击这里。


http://www.ppmy.cn/server/177144.html

相关文章

【Linux网络-NAT、代理服务、内网穿透】

一、NAT技术 1.NAT技术背景 之前我们讨论了,IPV4协议中,IP地址数量不充足的问题 NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能 NAT(网络地址转换,Network Address Translation)是一种…

分布式中间件:RabbitMQ确认消费机制

分布式中间件:RabbitMQ确认消费机制 在分布式系统中,消息队列是实现异步通信和系统解耦的重要组件。RabbitMQ 作为一款功能强大的消息队列中间件,提供了丰富的特性来保证消息的可靠传输和消费。其中,确认消费机制是确保消息被正确…

Pytorch torch.roll函数介绍

torch.roll 是 PyTorch 中的一个函数,用于对输入张量的元素进行循环滚动操作。它可以将张量的元素在指定的维度上移动,超出边界的元素会循环回到另一侧。以下是关于 torch.roll 函数的详细介绍: 函数语法 torch.roll(input, shifts, dimsNo…

数学建模:MATLAB循环神经网络

一、简述 1.循环神经网络 循环神经网络(RNN)是一种用于处理序列数据的神经网络。不同于传统的前馈神经网络,RNN在隐藏层中加入了自反馈连接,使得网络能够对序列中的每个元素执行相同的操作,同时保持一个“记忆”状态…

大屏技术汇集【目录】

Cesium 自从首次发布以来,经历了多个版本的迭代和更新,每个版本都带来了性能改进、新功能添加以及对现有功能的优化。以下是 Cesium 一些重要版本及其主要特点: 主要版本概述 Cesium 1.0 (2012年) 初始版本发布,确立了Cesium作为…

Three.js中的加载器与资源管理:构建丰富3D场景的关键

一、引言 Three.js是一个强大的JavaScript库,用于在Web浏览器中创建和展示3D图形。在构建复杂的3D场景时,有效地加载和管理各种资源是至关重要的。加载器在Three.js中扮演着桥梁的角色,负责将外部的3D模型、纹理、字体和其他资源导入到场景中…

对接马来西亚、印度、韩国、越南等全球金融数据示例

Python对接StockTV全球金融数据API的封装实现及使用教程: import requests import websockets import asyncio from typing import Dict, List, Optional, Union from datetime import datetimeclass StockTVClient:"""StockTV全球金融数据API客户端…

操作系统的心脏节拍:CPU中断如何驱动内核运转?

目录 一、硬件中断 二、时钟中断 三、软中断 四、用户态与内核态 一、硬件中断 为引出今天的话题&#xff0c;我们来思考这样一个问题&#xff1a; #include<stdio.h> int main() {int a;scanf("%d",&a);return 0; } 当以上程序执行到scanf时&#xf…