在VScode2022中使用Openssl全过程记录

Openssl苦本人久矣,遂决定记录在Visual Studio 2022中调用openssl外部库的流程。

1.VS的安装与下载

本人是在应用商店下载的。

官网下载地址:
https://visualstudio.microsoft.com/zh-hans/downloads/

推荐博客:Visual Studio下载安装教程(非常详细)从零基础入门到精通,看完这一篇就够了_visual studio安装教程-CSDN博客

2.Openssl的安装与编译

这里本人采用下载源码自行编译的方式,因为直接下载的gcc编译的文件无法使用,VS里面一直显示"not found",故只好采用自行编译的方式。

大概花了半天时间编译成功(因为确实很多文件)

详情请见本人另一篇博客(还没来得及写,事后补上吧)

3.VS项目创建

启动VS

创建新项目

选择控制台应用:

设置项目存放位置与名称后创建

4.Openssl库的链接

右键项目-属性

VC++目录-包含目录 加入include路径,这里编译完成后默认为:

C:\Program Files\OpenSSL\include

VC++目录-库目录 加入lib路径

C:\Program Files\OpenSSL\lib

在C/C++-预处理器里添加2个定义:CRT_SECURE_NO_WARNINGS;_WINSOCK_DEPRECATED_NO_WARNINGS;

这个是用于解决编译代码是出现警告的问题,不加也可以正常运行代码。

链接器-输入-附加依赖项:libssl.lib;libcrypto.lib;

这里建议把C:\Program Files\OpenSSL\bin目录下的相应文件,放在与项目文件相同的文件夹中,不然找不到。(这里如果有不放在相同文件夹里也能找的方法,欢迎在评论区分享)

测试代码如下:

#pragma comment(lib, "libssl.lib")
#pragma comment(lib, "libcrypto.lib")
//此处应该也能导入外部库,但本人为确保万无一失,都弄了
#include <iostream>
#include <stdio.h>

#include "openssl/ssl.h"

int main()
{
    SSL_CTX* ctx = NULL;
    const SSL_METHOD* meth = NULL;

    OpenSSL_add_ssl_algorithms();    // 初始化
    SSL_load_error_strings();        // 为打印调试信息作准备
    meth = TLS_client_method();    // 采用什么协议(SSLv2/SSLv3/TLSv1)在此指定
    ctx = SSL_CTX_new(meth);
    printf("%X\n", ctx);

    return 0;
}

然后生成解决方案,正在编译运行就可以啦!

### 如何在 Visual Studio 2022 中配置 OpenSSL #### 下载并安装 OpenSSL 为了能够在 Visual Studio 2022使用 OpenSSL,首先需要下载适合 Windows 的预编译二进制文件。建议访问官方网站 http://slproweb.com/ 并选择适用于 Win64 的 OpenSSL 版本进行下载和安装[^2]。 #### 创建新项目与设置属性 创建一个新的 C++ 控制台应用程序或其他类型的项目之后,在解决方案资源管理器里右键点击该项目名称,选择“属性”。 #### 配置包含目录 转到 **C/C++ -> 常规** 节点下的 “附加包含目录”,在此处添加 OpenSSL 安装路径中的 `include` 文件夹位置,这一步骤确保了编译期间可以找到必要的头文件[^3]。 ```cpp // 示例:假设 OpenSSL 安装于默认路径,则应输入如下字符串(不含引号) "C:\Program Files\OpenSSL-Win64\include" ``` #### 设置库目录 接着前往 **链接器 -> 常规** 下的 “附加库目录”。这里需指定 OpenSSL 库所在的 `lib` 子文件夹的位置,以便链接阶段能够定位静态或动态链接库(.lib)。 ```cpp // 同样假定为默认安装路径,则填入: "C:\Program Files\OpenSSL-Win64\lib" ``` #### 添加依赖项 对于 Release 和 Debug 不同构建模式可能有不同的 .lib 文件名,请确认选择了正确的版本,并将其加入到项目的链接器输入中: - 对于 Release 构建通常会用到像 `libssl.lib`, `libcrypto.lib`. - 如果是调试版则可能是带有 `-debug` 或者 `_d` 后缀的形式. 这些操作可以在 **链接器->输入** 页面完成,通过编辑 "附加依赖项" 来实现. #### 测试配置是否成功 编写简单的测试程序来验证集成是否有效。尝试调用一些基本功能如 SSL 上下文初始化等,如果一切正常应该不会遇到未定义引用错误等问题[^1]: ```cpp #include <openssl/md5.h> #include <iostream> int main() { unsigned char md5_result[MD5_DIGEST_LENGTH]; MD5((unsigned char*)"test", strlen("test"), (unsigned char*)&md5_result); std::cout << "If no linker errors occur, configuration is successful." << std::endl; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值