rust引入含有openssl相关包报错(openssl未找到和编译运行报错等相关问题)解决方案

1. 问题描述

某天在我的rust程序里引入了actix-proxy = "0.2"这个包,我的程序编译通不过了,rust-analyser也罢工了,错误也提示不出来了,查看错误提示是openssl编译的问题,于是就经过漫长的折腾,终于找到了解决办法

2. 解决办法

2.1 安装vcpkg

参考 https://blog.csdn.net/sexyluna/article/details/115285405
https://learn.microsoft.com/zh-cn/vcpkg/get_started/get-started?pivots=shell-powershell
我是在C:\Program Files 目录下运行的git clone,可以参考
安装完后将cvpkg的目录添加到path的环境变量中
image
关闭命令行窗口
然后打开一个新的cmd或powershell运行,vcpkg version
能正确显示版本就成功了
image

2.2 用vcpkg安装openssl

参考 https://blog.csdn.net/ywch520/article/details/135565864
运行vcpkg install openssl:x64-windows
等待安装完成
然后添加环境变量

X86_64_PC_WINDOWS_MSVC_OPENSSL_LIB_DIR = 安装目录\vcpkg\packages\openssl_x64-windows\lib
X86_64_PC_WINDOWS_MSVC_OPENSSL_INCLUDE_DIR = 安装目录\vcpkg\packages\openssl_x64-windows\include
X86_64_PC_WINDOWS_MSVC_OPENSSL_DIR = 安装目录\vcpkg\packages\openssl_x64-windows

我的提供参考
image

2.3 安装perl

参考 https://www.runoob.com/perl/perl-environment.html
per有两个版本,推荐strawberry的msi版本,自动设置环境变量
image
!!!一定要安装,不然运行时还会报错!

2.4 在tmol中添加如下依赖

openssl = { version = "0.10", features = ["vendored"] }
之前没添加这个,编译没问题,但程序运行不起来。。。
现在,cargo run 吧!!! XD
image
以上是静态链接的办法,动态链接参考第5节
参考 https://www.cnblogs.com/chy-lionni/p/18420088 ,大佬的文章很有用!!!

2.5 使用别人编译好的版本

未验证,这里的内容是我之前摸索的过程,结合大佬的文章修改了设置错误的环境变量
参考 https://www.cnblogs.com/chy-lionni/p/18420088

2.5.1 下载openssl编译后的包

https://slproweb.com/products/Win32OpenSSL.html
选择完全包
image

2.5.2 安装

注意下面这一步把dll安装到/bin所在的同级目录
image
一路回车,最后的捐款可以不选

2.5.3. 设置环境变量

经过实验,主要的环境变量有3个
OPENSSL_DIR = "C:\Program Files\OpenSSL-Win64"
OPENSSL_INCLUDE_DIR = "C:\Program Files\OpenSSL-Win64\include"
OPENSSL_LIB_DIR = "C:\Program Files\OpenSSL-Win64\lib\VC\x64\MTd"
这里的环境变量设置参考的 https://www.cnblogs.com/chy-lionni/p/18420088
他们之间的区别参考这篇文章里的介绍 https://blog.csdn.net/m0_61882573/article/details/139030184,
根据上面的文章显示,似乎切换 OPENSSL_LIB_DIR 的环境变量文件夹可以转换静态或动态链接,但本人未实验!

2.5.4 刷新系统环境变量

以管理员身份执行以下cmd指令
set PATH=C:
关闭cmd窗口,你的环境变量就生效了,不用重启电脑
然后关闭vs code,重新打开项目,rust-analyzer就不再报错,语法分析也恢复正常了!!!

3. 参考文献

https://blog.csdn.net/m0_61882573/article/details/139030184
https://github.com/sfackler/rust-openssl/issues/1793
https://www.taurusxin.com/openssl_win_build/
https://blog.csdn.net/sexyluna/article/details/115285405
https://www.cnblogs.com/chy-lionni/p/18420088

posted @   Jiajie6591  阅读(98)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 易语言 —— 开山篇
点击右上角即可分享
微信分享提示